Переглянути джерело

添加执行同步脚本命令

lyhzzz 3 роки тому
батько
коміт
82cfe8c3ff

+ 6 - 0
pom.xml

@@ -87,6 +87,12 @@
             <groupId>org.apache.httpcomponents</groupId>
             <artifactId>httpclient</artifactId>
         </dependency>
+
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>easyexcel</artifactId>
+            <version>3.1.0</version>
+        </dependency>
     </dependencies>
 
 

+ 0 - 43
src/main/java/com/cdf/controller/back/HotController.java

@@ -1,43 +0,0 @@
-package com.cdf.controller.back;
-
-import com.alibaba.fastjson.JSONObject;
-import com.cdf.common.ResultCode;
-import com.cdf.common.ResultData;
-import com.cdf.entity.HotRelation;
-import com.cdf.exception.BusinessException;
-import com.cdf.request.HotTypeRequest;
-import com.cdf.service.IHotRelationService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-@RestController
-@RequestMapping("/back")
-public class HotController {
-
-    @Autowired
-    private IHotRelationService hotRelationService;
-
-    @PostMapping("/getByHotType")
-    public ResultData getByHotType(@RequestBody HotTypeRequest hotTypeRequest){
-        if(hotTypeRequest.getHotType() == null){
-            throw new BusinessException(ResultCode.PARAM_MISS);
-        }
-        return ResultData.ok();
-    }
-
-    @PostMapping("/getBySid")
-    public ResultData getBySid(@RequestBody HotTypeRequest hotTypeRequest){
-        if(hotTypeRequest.getSid() == null){
-            throw new BusinessException(ResultCode.PARAM_MISS);
-        }
-        HotRelation hotRelation = hotRelationService.getById(hotTypeRequest.getSid());
-        if(hotRelation == null){
-
-        }
-        hotRelation.getRelationIds();
-        return ResultData.ok();
-    }
-}

+ 9 - 0
src/main/java/com/cdf/controller/back/SceneBackController.java

@@ -1,5 +1,6 @@
 package com.cdf.controller.back;
 
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.cdf.aop.SysLog;
 import com.cdf.common.ResultData;
@@ -68,4 +69,12 @@ public class SceneBackController {
         fdkkSceneService.move(param,token);
         return ResultData.ok();
     }
+
+    @GetMapping("/synScene")
+    @SysLog(logType = "VR场景",value = "同步场景")
+    public ResultData synScene ( @RequestHeader String token ){
+        fdkkSceneService.sysNum(token);
+
+        return ResultData.ok();
+    }
 }

+ 8 - 25
src/main/java/com/cdf/controller/back/ShopBackController.java

@@ -1,6 +1,9 @@
 package com.cdf.controller.back;
 
 
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.ExcelWriter;
+import com.alibaba.excel.write.metadata.WriteSheet;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.cdf.aop.SysLog;
@@ -19,6 +22,9 @@ import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.net.URLEncoder;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -44,31 +50,8 @@ public class ShopBackController {
     }
     @PostMapping("/list")
     public ResultData list(@RequestBody ShopRequest param){
-        LambdaQueryWrapper<Shop> wrapper = new LambdaQueryWrapper<>();
-        if(StringUtils.isNotBlank(param.getShopName())){
-            wrapper.eq(Shop::getShopName,param.getShopName());
-        }
-        if(param.getCategoryId() !=null){
-            wrapper.eq(Shop::getCategoryId,param.getCategoryId());
-        }
-        wrapper.orderByAsc(Shop::getSort);
-        wrapper.orderByDesc(Shop::getCreateTime);
-        Page<Shop> page = shopService.page(new Page<>(param.getPageNum(), param.getPageSize()), wrapper);
-        List<ShopVo> pageVo = new ArrayList<>();
-        for (Shop shop : page.getRecords()) {
-            ShopVo shopVo = new ShopVo();
-            BeanUtils.copyProperties(shop,shopVo);
-            Dept dept = deptService.getById(shop.getDeptId());
-            if(dept !=null){
-                shopVo.setDeptName(dept.getDeptName());
-            }
-            ShopCategory category = categoryService.getById(shop.getCategoryId());
-            if(category !=null){
-                shopVo.setCategoryName(category.getCategoryName());
-            }
-            pageVo.add(shopVo);
-        }
-        return ResultData.ok(PageInfo.PageInfo(page.getCurrent(),page.getSize(),page.getTotal(),pageVo));
+        PageInfo pageInfo = shopService.pageList(param);
+        return ResultData.ok(pageInfo);
     }
 
     @PostMapping("/delete")

+ 66 - 1
src/main/java/com/cdf/controller/back/TestController.java

@@ -1,27 +1,47 @@
 package com.cdf.controller.back;
 
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.ExcelWriter;
+import com.alibaba.excel.write.metadata.WriteSheet;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.cdf.common.PageInfo;
 import com.cdf.common.ResultData;
+import com.cdf.entity.Shop;
 import com.cdf.httpClient.client.CdfClient;
 import com.cdf.httpClient.client.FdkkClient;
 import com.cdf.httpClient.request.FdkkAllSceneRequest;
 import com.cdf.httpClient.response.FdkkResponse;
 import com.cdf.httpClient.response.cdf.CdfProductListRequest;
+import com.cdf.request.ShopRequest;
+import com.cdf.response.ShopVo;
 import com.cdf.schedule.ScheduleTask;
+import com.cdf.service.IShopService;
+import com.cdf.util.ExcelUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.net.URLEncoder;
+import java.util.HashMap;
+import java.util.List;
 
 
 @RestController
 public class TestController {
 
+    @Autowired
+    IShopService shopService;
     @Resource
     CdfClient cdfClient;
     @Autowired
     private ScheduleTask scheduleTask;
-    @Autowired
+    @Resource
     FdkkClient fdkkClient;
 
     @RequestMapping("/test/getProductById")
@@ -51,4 +71,49 @@ public class TestController {
         FdkkResponse allScene = fdkkClient.getAllScene(new FdkkAllSceneRequest() ,token);
         return ResultData.ok(allScene);
     }
+
+    @GetMapping("/export")
+    public void export(HttpServletRequest request, HttpServletResponse response) throws Exception {
+        ShopRequest param = new ShopRequest();
+        param.setPageNum(1);
+        param.setPageSize(1000);
+        PageInfo pageInfo = shopService.pageList(param);
+        List<ShopVo> list = (List<ShopVo>) pageInfo.getList();
+        this.commonExport(request,response,"店铺列表",list,ShopVo.class);
+
+    }
+    @PostMapping("uploadExcel")
+    public ResultData uploadExcel(@RequestParam(required = false) MultipartFile file) throws IOException {
+        List<HashMap<Integer, String>> excelRowList = ExcelUtil.getExcelRowList(file);
+        for (HashMap<Integer, String> map : excelRowList) {
+            String id = map.get(2);
+            String sort = map.get(4);
+            LambdaUpdateWrapper<Shop> wrapper = new LambdaUpdateWrapper<>();
+            wrapper.eq(Shop::getId,id);
+            wrapper.set(Shop::getSort,sort);
+            shopService.update(wrapper);
+        }
+        return ResultData.ok();
+    }
+
+
+    public void commonExport(HttpServletRequest request, HttpServletResponse response, String name, List<?> result, Class<?> clazz) throws Exception {
+        response.setContentType("application/vnd.ms-excel");
+        response.setCharacterEncoding("utf-8");
+        String fileName = name  + ".xlsx";
+        fileName = URLEncoder.encode(fileName, "UTF-8");
+        response.setHeader("Content-disposition", "attachment;filename=" + fileName);
+        ExcelWriter excelWriter = null;
+        try {
+            excelWriter = EasyExcel.write(response.getOutputStream(), clazz).build();
+            WriteSheet writeSheet = EasyExcel.writerSheet(name).build();
+            excelWriter.write(result, writeSheet);
+        }catch (Exception e){
+            e.printStackTrace();
+        }finally {
+            if(excelWriter != null){
+                excelWriter.finish();
+            }
+        }
+    }
 }

+ 1 - 1
src/main/java/com/cdf/generate/AutoGenerate.java

@@ -20,7 +20,7 @@ public class AutoGenerate {
         String path =System.getProperty("user.dir") ;
 
         generate(path,"", getTables(new String[]{
-                "t_user_token"
+                "t_syn_num"
         }));
 
 //        generate(path,"goods", getTables(new String[]{

+ 12 - 0
src/main/java/com/cdf/response/ShopVo.java

@@ -1,10 +1,22 @@
 package com.cdf.response;
 
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.cdf.entity.Shop;
 import lombok.Data;
 
 @Data
 public class ShopVo extends Shop {
+
+    private Integer id;
+
+    @ExcelProperty("组织")
     private String deptName;
+
+    @ExcelProperty("分类")
     private String categoryName;
+
 }

+ 4 - 0
src/main/java/com/cdf/service/IShopService.java

@@ -1,7 +1,10 @@
 package com.cdf.service;
 
+import com.cdf.common.PageInfo;
 import com.cdf.entity.Shop;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.cdf.request.ShopRequest;
+import com.cdf.response.ShopVo;
 
 /**
  * <p>
@@ -13,4 +16,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface IShopService extends IService<Shop> {
 
+    PageInfo pageList(ShopRequest param);
 }

+ 1 - 0
src/main/java/com/cdf/service/impl/FdkkSceneEditService.java

@@ -158,6 +158,7 @@ public class FdkkSceneEditService {
             throw new BusinessException(fdkkResponse.getCode(),fdkkResponse.getMsg());
         }
         writeHotJson(fdkkHotRequest.getNum());
+        ReadCmdLine.callShellByExec("aws s3 sync s3://4dkankan/cdf s3://4dage-moderate2/cdf --profile user1");
     }
 
     public void writeHotJson(String num) throws IOException {

+ 20 - 0
src/main/java/com/cdf/service/impl/FdkkSceneService.java

@@ -5,12 +5,14 @@ import com.alibaba.fastjson.JSONObject;
 import com.cdf.common.PageInfo;
 import com.cdf.common.ResultCode;
 import com.cdf.entity.FdkkUser;
+import com.cdf.entity.SynNum;
 import com.cdf.entity.User;
 import com.cdf.exception.BusinessException;
 import com.cdf.httpClient.client.FdkkClient;
 import com.cdf.httpClient.request.*;
 import com.cdf.httpClient.response.FdkkResponse;
 import com.cdf.service.IFdkkUserService;
+import com.cdf.service.ISynNumService;
 import com.cdf.service.IUserService;
 import com.cdf.util.Base64Converter;
 import com.cdf.util.JwtUtil;
@@ -31,6 +33,8 @@ public class FdkkSceneService {
     private IFdkkUserService fdkkUserService;
     @Autowired
     private IUserService userService;
+    @Autowired
+    private ISynNumService synNumService;
 
     public String getFdkkToken(String token){
         Integer userId = JwtUtil.getId(token);
@@ -128,4 +132,20 @@ public class FdkkSceneService {
     public FdkkResponse allList(FdkkSceneListRequest param,String token) {
         return fdkkClient.getOnlySceneList(param, getFdkkToken(token));
     }
+
+    public void sysNum(String token) {
+        FdkkSceneListRequest param = new FdkkSceneListRequest();
+        FdkkResponse fdkkResponse = this.allList(param,token);
+        JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(fdkkResponse.getData()));
+        JSONArray list = jsonObject.getJSONArray("list");
+        for (Object o : list) {
+            JSONObject obj = (JSONObject) o;
+            String num = obj.getString("num");
+            SynNum synNum = synNumService.getById(num);
+            if(synNum != null){
+                return;
+            }
+            //todo 同步数据
+        }
+    }
 }

+ 51 - 0
src/main/java/com/cdf/service/impl/ShopServiceImpl.java

@@ -1,11 +1,26 @@
 package com.cdf.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.cdf.common.PageInfo;
+import com.cdf.entity.Dept;
 import com.cdf.entity.Shop;
+import com.cdf.entity.ShopCategory;
 import com.cdf.mapper.IShopMapper;
+import com.cdf.request.ShopRequest;
+import com.cdf.response.ShopVo;
+import com.cdf.service.IDeptService;
+import com.cdf.service.IShopCategoryService;
 import com.cdf.service.IShopService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
+import java.util.List;
+
 /**
  * <p>
  *  服务实现类
@@ -17,4 +32,40 @@ import org.springframework.stereotype.Service;
 @Service
 public class ShopServiceImpl extends ServiceImpl<IShopMapper, Shop> implements IShopService {
 
+    @Autowired
+    IDeptService deptService;
+    @Autowired
+    IShopCategoryService categoryService;
+
+    @Override
+    public PageInfo pageList(ShopRequest param) {
+        LambdaQueryWrapper<Shop> wrapper = new LambdaQueryWrapper<>();
+        if(StringUtils.isNotBlank(param.getShopName())){
+            wrapper.eq(Shop::getShopName,param.getShopName());
+        }
+        if(param.getCategoryId() !=null){
+            wrapper.eq(Shop::getCategoryId,param.getCategoryId());
+        }
+        wrapper.orderByAsc(Shop::getSort);
+        wrapper.orderByDesc(Shop::getCreateTime);
+        Page<Shop> page = this.page(new Page<>(param.getPageNum(), param.getPageSize()), wrapper);
+        Page<ShopVo> pageVo = new Page<>(param.getPageNum(),param.getPageSize());
+        List<ShopVo> listVo = new ArrayList<>();
+        for (Shop shop : page.getRecords()) {
+            ShopVo shopVo = new ShopVo();
+            BeanUtils.copyProperties(shop,shopVo);
+            Dept dept = deptService.getById(shop.getDeptId());
+            if(dept !=null){
+                shopVo.setDeptName(dept.getDeptName());
+            }
+            ShopCategory category = categoryService.getById(shop.getCategoryId());
+            if(category !=null){
+                shopVo.setCategoryName(category.getCategoryName());
+            }
+            listVo.add(shopVo);
+        }
+        pageVo.setRecords(listVo);
+        pageVo.setTotal(pageVo.getTotal());
+        return PageInfo.PageInfo(pageVo);
+    }
 }

+ 61 - 0
src/main/java/com/cdf/util/ExcelUtil.java

@@ -0,0 +1,61 @@
+package com.cdf.util;
+
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+public class ExcelUtil {
+
+
+    public static List<HashMap<Integer,String>> getExcelRowList(MultipartFile multipartFile) throws IOException {
+        //行List,也是最终要返回的List
+        List<HashMap<Integer,String>> rowList=new ArrayList<>();
+        Workbook workbook=getExcelWorkBook(multipartFile);
+        Sheet sheet = workbook.getSheetAt(0);
+        if (sheet == null) {
+            throw new IOException("创建Sheet失败!");
+        }
+        //开始遍历行
+        for (int i=1;i<= sheet.getLastRowNum();i++){
+            Row row = sheet.getRow(i);
+            //列List
+            HashMap<Integer,String> map = new HashMap<>();
+            //转换为List数组
+            for (int cellNum=0;cellNum<= row.getLastCellNum();cellNum++){
+                Cell cell = row.getCell(cellNum);
+                if(cell != null){
+                    map.put(cellNum,cell.toString());
+                }
+            }
+            rowList.add(map);
+        }
+        workbook.close();
+        return rowList;
+    }
+
+
+    //获取WorkBook对象
+    private static Workbook getExcelWorkBook(MultipartFile multipartFile) throws IOException {
+        InputStream inputStream=multipartFile.getInputStream();
+        String originalFileName=multipartFile.getOriginalFilename();
+        assert originalFileName != null;
+        String fileType=originalFileName.substring(originalFileName.lastIndexOf(".")+1);
+        if (fileType.equalsIgnoreCase("xls")) {
+            //xls格式
+            return new HSSFWorkbook(inputStream);
+        } else {
+            //xlsx格式
+            return new XSSFWorkbook(inputStream);
+        }
+    }
+}

+ 33 - 0
src/main/java/com/cdf/util/ReadCmdLine.java

@@ -0,0 +1,33 @@
+package com.cdf.util;
+
+import lombok.extern.slf4j.Slf4j;
+
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+
+@Slf4j
+public class ReadCmdLine {
+
+    /**
+     * 使用 exec 调用shell脚本
+     * @param shell  命令
+     */
+    public static void callShellByExec(String shell) {
+        BufferedReader reader = null;
+        try {
+            Process process = Runtime.getRuntime().exec(shell);
+            int exitValue = process.waitFor();
+            if (0 != exitValue) {
+                log.error("call shell failed. error code is :" + exitValue);
+            }
+            // 返回值
+            reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
+            String line = null;
+            while ((line = reader.readLine()) != null) {
+               log.info("mac@wxw %  " + line);
+            }
+        } catch (Throwable e) {
+            log.error("call shell failed. " + e);
+        }
+    }
+}