chenw преди 6 години
родител
ревизия
38aea3ea77

+ 2 - 0
bi-auth/src/main/java/com/usoftchina/bi/auth/config/ConfigAdapter.java

@@ -25,6 +25,8 @@ public class ConfigAdapter implements WebMvcConfigurer {
         .addPathPatterns("/getUserList").addPathPatterns("/updateUser")
         .addPathPatterns("/Connector/*").excludePathPatterns("/Connector/getListDataConnector")
         .excludePathPatterns("/Connector/getConnectorGroup")
+        .excludePathPatterns("/getDashboardByCode")
+        .excludePathPatterns("/getSharedDashboard")
         .excludePathPatterns("/Connector/getConnectorData");
         logger.info("进入全局拦截器");
     }

+ 1 - 4
bi-server/pom.xml

@@ -12,7 +12,7 @@
   <groupId>com.usoftchina.platform</groupId>
   <artifactId>bi-server</artifactId>
   <description>bi-server</description>
-  <packaging>jar</packaging>
+  <packaging>war</packaging>
 
   <dependencies>
     <dependency>
@@ -51,9 +51,6 @@
       <plugin>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-maven-plugin</artifactId>
-        <configuration>
-          <includeSystemScope>true</includeSystemScope>
-        </configuration>
       </plugin>
     </plugins>
   </build>

+ 30 - 2
bi-server/src/main/java/com/usoftchina/bi/server/controller/dashboard/DashboardsController.java

@@ -2,6 +2,7 @@ package com.usoftchina.bi.server.controller.dashboard;
 
 import com.usoftchina.bi.core.base.RepEntity;
 import com.usoftchina.bi.core.base.TestPage;
+import com.usoftchina.bi.server.model.bo.ShareReqBO;
 import com.usoftchina.bi.server.model.pojo.annotation.CheckToken;
 import com.usoftchina.bi.server.model.vo.configVo.ChangeOrderInfo;
 import com.usoftchina.bi.server.model.vo.configVo.ChartsToDashInfo;
@@ -73,11 +74,16 @@ public class DashboardsController {
         return dashboardsService.getDashboards(token, id);
     }
 
+    /**
+     * 通过看板编号查看单个看板详情
+     * @param code
+     * @return
+     */
     @ApiOperation(value = "单个看板", notes = "查看单个看板(通过看板编号)", response = RepEntity.class)
     @CheckToken
     @GetMapping("/getDashboardByCode")
-    public RepEntity getDashboardByCode(@RequestHeader String token,@RequestParam("code") String code){
-        return dashboardsService.getDashboardByCode(token, code);
+    public RepEntity getDashboardByCode(@RequestParam("code") String code){
+        return dashboardsService.getDashboardByCode(code);
     }
 
     /*
@@ -108,4 +114,26 @@ public class DashboardsController {
     public RepEntity showChartsInDash(@RequestHeader String token, @RequestBody ChartsToDashInfo body) throws SQLException {
         return dashboardsToChartsUtilService.getChartsInDash(body, token);
     }
+
+    /**
+     * 生成分享链接
+     * @param shareReqBO
+     * @return
+     */
+    @ApiOperation(value = "生成分享链接", notes = "生成分享链接", response = RepEntity.class)
+    @PostMapping("/share")
+    public RepEntity share(@RequestBody ShareReqBO shareReqBO){
+        return dashboardsService.shareDashBoard(shareReqBO);
+    }
+
+    /**
+     * 通过分享链接获取看板信息
+     * @param data
+     * @return
+     */
+    @ApiOperation(value = "通过分享链接获取看板信息", notes = "通过分享链接获取看板信息", response = RepEntity.class)
+    @GetMapping("/getSharedDashboard")
+    public RepEntity getSharedDashboard(@RequestParam("data") String data) {
+        return dashboardsService.getSharedDashboard(data);
+    }
 }

+ 2 - 2
bi-server/src/main/java/com/usoftchina/bi/server/dao/dashboard/DashboardsMapper.java

@@ -123,8 +123,8 @@ public interface DashboardsMapper {
     })
     Dashboards getDashboards(@Param("userId") int userId, @Param("id") int id);
 
-    @Select("SELECT ID FROM BI_DASHBOARDS WHERE BD_CODE = #{code}")
-    int getIdByCode(String code);
+    @Select("SELECT * FROM BI_DASHBOARDS WHERE BD_CODE = #{code}")
+    Dashboards getDashboardByCode(String code);
 
     /*
     看板移交

+ 29 - 0
bi-server/src/main/java/com/usoftchina/bi/server/model/bo/ShareReqBO.java

@@ -0,0 +1,29 @@
+package com.usoftchina.bi.server.model.bo;
+
+import java.io.Serializable;
+
+/**
+ * @Author chenwei
+ * @Date 2019-04-08
+ */
+public class ShareReqBO implements Serializable {
+
+    private int id;
+    private Double delay = 1.0;
+
+    public int getId() {
+        return id;
+    }
+
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    public Double getDelay() {
+        return delay;
+    }
+
+    public void setDelay(Double delay) {
+        this.delay = delay;
+    }
+}

+ 53 - 6
bi-server/src/main/java/com/usoftchina/bi/server/service/dashboard/DashboardsService.java

@@ -1,11 +1,14 @@
 package com.usoftchina.bi.server.service.dashboard;
 
 import com.usoftchina.bi.core.exception.MyException;
+import com.usoftchina.bi.core.utils.EncryUtil;
+import com.usoftchina.bi.core.utils.JsonUtils;
 import com.usoftchina.bi.server.dao.dashboard.DashboardsMapper;
 import com.usoftchina.bi.server.dao.user.UserMapper;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.github.pagehelper.PageInfo;
 import com.usoftchina.bi.server.model.bo.DashOrder;
+import com.usoftchina.bi.server.model.bo.ShareReqBO;
 import com.usoftchina.bi.server.model.po.Dashboards;
 import com.usoftchina.bi.core.base.RepCode;
 import com.usoftchina.bi.core.base.RepEntity;
@@ -15,6 +18,8 @@ import com.usoftchina.bi.server.model.vo.configVo.DashboardsInfo;
 import com.usoftchina.bi.server.model.vo.dataVo.DashboardOrderInfo;
 import com.usoftchina.bi.server.service.chart.ChartsUtilService;
 import com.usoftchina.bi.core.utils.GetTokenDataUtil;
+import org.bouncycastle.util.encoders.UrlBase64;
+import org.bouncycastle.util.encoders.UrlBase64Encoder;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -160,21 +165,63 @@ public class DashboardsService {
 
     /**
      * 通过code查看单个看板
-     * @param token
      * @param code
      * @return
      */
-    public RepEntity getDashboardByCode(String token, String code) {
-        Map<String, String> stringMap = GetTokenDataUtil.getTokenData(token);
-        int userId = Integer.parseInt(stringMap.get("id"));
-        int id = dashboardsMapper.getIdByCode(code);
-        Dashboards dashboards = dashboardsMapper.getDashboards(userId, id);
+    public RepEntity getDashboardByCode(String code) {
+        Dashboards dashboard = dashboardsMapper.getDashboardByCode(code);
+        Dashboards dashboards = dashboardsMapper.getDashboards(dashboard.getCreateId(), dashboard.getId());
         if (dashboards == null){
             return new RepEntity(RepCode.DashboardNonExistent);
         }
         return new RepEntity(RepCode.success, dashboards);
     }
 
+    /**
+     * 生成分享链接参数
+     * @param shareReqBO
+     * @return
+     */
+    public RepEntity shareDashBoard(ShareReqBO shareReqBO) {
+        Long endTime = new Double(System.currentTimeMillis() + shareReqBO.getDelay() * 24 * 60 * 60 * 1000).longValue();
+        String data = "id=" + shareReqBO.getId() + "&endTime=" + endTime;
+        String encodeData = new String(UrlBase64.encode(data.getBytes()));
+        return new RepEntity(RepCode.success, encodeData);
+    }
+
+    /**
+     * 链接参数解析
+     * @param data
+     * @return
+     */
+    private Map<String, String> parseParams(String data) {
+        String decodeData = new String(UrlBase64.decode(data));
+        Map<String, String> map = new HashMap<>();
+        int firstEndIndex = decodeData.indexOf("&");
+        map.put("id", decodeData.substring(3, firstEndIndex));
+        map.put("endTime", decodeData.substring(firstEndIndex));
+        return map;
+    }
+
+    /**
+     * 通过分享链接获取看板信息
+     * @param data
+     * @return
+     */
+    public RepEntity getSharedDashboard(String data){
+        Map<String, String> params = parseParams(data);
+        Long endTime = Long.valueOf(params.get("endTime"));
+        if (System.currentTimeMillis() > endTime) {
+            throw new MyException("分享链接已过期");
+        }
+        int id = Integer.valueOf(params.get("id"));
+        int creatorId = dashboardsMapper.getCreateIdById(id);
+        Dashboards dashboards = dashboardsMapper.getDashboards(creatorId, id);
+        if (dashboards == null){
+            return new RepEntity(RepCode.DashboardNonExistent);
+        }
+        return new RepEntity(RepCode.success, dashboards);
+    }
 
     /*
     转交看板