Browse Source

Add /panel/get/byUser/{userCode}

sunyj 8 years ago
parent
commit
0fe5e67a3b

+ 1 - 1
kanban-auth/src/main/java/com/uas/kanban/SecurityConfiguration.java

@@ -36,7 +36,7 @@ public class SecurityConfiguration extends WebMvcConfigurerAdapter {
         // 添加管理员才可访问的路径
         // 用户、面板管理
         securityInterceptor.addAdminPatterns("/user/save*/**", "/user/update*/**", "/user/delete*/**", "/user/get*/**",
-                "/panel/save*/**", "/panel/update*/**", "/panel/delete*/**");
+                "/panel/save*/**", "/panel/update*/**", "/panel/delete*/**", "/panel/assignPanel", "/panel/get/byUser/**");
         // 看板设计
         securityInterceptor.addAdminPatterns("/kanban/**", "/board");
         // 参数

+ 4 - 1
kanban-common/src/main/java/com/uas/kanban/base/BaseDao.java

@@ -537,7 +537,10 @@ public class BaseDao<T extends BaseEntity> {
      * @param codes the codes to query
      * @return the matched entities. may be null.
      */
-    public List<T> findIn(@NotEmpty("codes") Iterable<String> codes) {
+    public List<T> findIn(Iterable<String> codes) {
+        if (CollectionUtils.isEmpty(codes)) {
+            return null;
+        }
         return findListBy("code", codes);
     }
 

+ 4 - 0
kanban-common/src/main/java/com/uas/kanban/util/CollectionUtils.java

@@ -18,4 +18,8 @@ public class CollectionUtils {
     public static boolean isEmpty(Map<?, ?> map) {
         return (map == null || map.isEmpty());
     }
+
+    public static boolean isEmpty(Iterable<?> iter) {
+        return (iter == null || !iter.iterator().hasNext());
+    }
 }

+ 31 - 1
kanban-console/README.md

@@ -543,6 +543,36 @@
 ## 通用接口
   请参照[通用接口](#通用接口)
 
+## 获取分配给用户的面板
+- 路径
+`
+/panel/get/byUser/{userCode}
+`
+
+- 参数
+<table border=0 cellpadding=5 cellspacing=0>
+    <tr style="color:#fff">
+        <th>参数类型</th>
+        <th>描述</th>
+    </tr>
+    <tr>
+        <td>String</td>
+        <td>用户 code,将路径中的 {userCode} 替换为实际值</td>
+    </tr>
+</table>
+
+- 返回值
+<table border=0 cellpadding=5 cellspacing=0>
+    <tr style="color:#fff">
+        <th>类型</th>
+        <th>描述</th>
+    </tr>
+    <tr>
+        <td>JSONArray</td>
+        <td>面板数据,具体字段请参照[数据字典](#面板数据字典)</td>
+    </tr>
+</table>
+
 ## 分配面板
 - 路径
 `
@@ -876,7 +906,7 @@
 ## 通用接口
   请参照[通用接口](#通用接口),面板实例没有 /save 接口
 
-## 分配面板
+## 解析数据
 - 路径
 `
 /panelInstance/parseData/{code}

+ 16 - 1
kanban-console/src/main/java/com/uas/kanban/controller/PanelController.java

@@ -6,11 +6,13 @@ import com.uas.kanban.model.Panel;
 import com.uas.kanban.service.PanelService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.ResponseBody;
 
 import javax.servlet.http.HttpServletRequest;
 import java.util.Arrays;
+import java.util.List;
 
 /**
  * 面板
@@ -31,7 +33,7 @@ public class PanelController extends BaseController<Panel> {
      * @param userCode   用户 code
      * @param panelCodes 面板 code
      * @param request    request
-     * @return 面板实例
+     * @return 分配成功
      */
     @RequestMapping("/assignPanel")
     @ResponseBody
@@ -40,4 +42,17 @@ public class PanelController extends BaseController<Panel> {
         return true;
     }
 
+    /**
+     * 获取分配给用户的面板
+     *
+     * @param userCode 用户 code
+     * @param request  request
+     * @return 面板
+     */
+    @RequestMapping("/get/byUser/{userCode}")
+    @ResponseBody
+    public List<Panel> getByUserCode(@PathVariable("userCode") String userCode, HttpServletRequest request) {
+        return panelService.getByUserCode(userCode);
+    }
+
 }

+ 16 - 0
kanban-console/src/main/java/com/uas/kanban/dao/UserPanelRelationDao.java

@@ -64,6 +64,22 @@ public class UserPanelRelationDao extends BaseDao<UserPanelRelation> {
         }
     }
 
+    /**
+     * 获取分配给用户的面板 code
+     *
+     * @param userCode 用户 code
+     * @return 面板 code
+     */
+    public List<String> findAllUserPanelCodes(@NotEmpty("userCode") String userCode) {
+        Query<UserPanelRelation> query = createQuery();
+        query.field("userCode").equal(userCode);
+        try {
+            return findField(query, "panelCode", String.class);
+        } catch (NoSuchFieldException e) {
+            throw new IllegalStateException(e.getMessage(), e);
+        }
+    }
+
     /**
      * 根据指定的用户 code 和面板 code 查询用户面板关系
      *

+ 8 - 0
kanban-console/src/main/java/com/uas/kanban/service/PanelService.java

@@ -1,6 +1,7 @@
 package com.uas.kanban.service;
 
 import com.uas.kanban.annotation.NotEmpty;
+import com.uas.kanban.model.Panel;
 import com.uas.kanban.model.UserPanelRelation;
 
 import java.util.List;
@@ -22,4 +23,11 @@ public interface PanelService {
      */
     List<UserPanelRelation> assignPanel(@NotEmpty("userCode") String userCode, @NotEmpty("panelCodes") List<String> panelCodes);
 
+    /**
+     * 获取分配给用户的面板
+     *
+     * @param userCode 用户 code
+     * @return 面板
+     */
+    List<Panel> getByUserCode(@NotEmpty("userCode") String userCode);
 }

+ 6 - 0
kanban-console/src/main/java/com/uas/kanban/service/impl/PanelServiceImpl.java

@@ -99,4 +99,10 @@ public class PanelServiceImpl extends BaseService<Panel> implements PanelService
         // delete user's PanelInstance before generating new instances?
         return userPanelRelations;
     }
+
+    @Override
+    public List<Panel> getByUserCode(@NotEmpty("userCode") String userCode) {
+        List<String> userPanelCodes = userPanelRelationDao.findAllUserPanelCodes(userCode);
+        return panelDao.findIn(userPanelCodes);
+    }
 }

+ 1 - 0
kanban-console/src/main/webapp/WEB-INF/views/console.html

@@ -50,6 +50,7 @@
             <li><a target="_blank">panel/get/4EC2735D343</a></li>
             <li><a target="_blank">panel/get?page=1&size=10</a></li>
             <br/>
+            <li><a target="_blank">panel/get/byUser/53E04542411</a></li>
             <li><a target="_blank">panel/assignPanel?userCode=53E04542411&panelCodes=53E04631812&panelCodes=53E04631813</a></li>
         </ol>
         <strong><li class="title">参数</li></strong>