deason 4 years ago
parent
commit
1ab707f2c4

+ 37 - 11
src/main/java/cn/com/qmth/examcloud/tool/task/basic/InitUserDataRule.java

@@ -2,6 +2,7 @@ package cn.com.qmth.examcloud.tool.task.basic;
 
 import cn.com.qmth.examcloud.tool.task.Task;
 import lombok.Data;
+import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -58,11 +59,13 @@ public class InitUserDataRule implements Task {
         log.info("task end...");
     }
 
-    private void initUserDataRulesForDefaultStatus(List<UserInfo> list) {
-        List<UserDataRuleInfo> todoList = new ArrayList<>();
+    private void initUserDataRulesForDefaultStatus(List<UserInfo> userList) {
+        List<UserDataRuleInfo> todoRuleList = new ArrayList<>();
+
+        int existRuleSize = 0;
+        for (UserInfo user : userList) {
+            UserDataRuleInfo curOrgDataRule = null;
 
-        int existSize = 0;
-        for (UserInfo user : list) {
             // 用户与学习中心、课程、考试等数据维度的“默认全部”权限
             for (DataRuleType type : DataRuleType.values()) {
                 UserDataRuleInfo rule = new UserDataRuleInfo();
@@ -73,11 +76,15 @@ public class InitUserDataRule implements Task {
                 rule.setEnabled(true);
 
                 if (this.existUserDataRule(rule)) {
-                    existSize++;
+                    existRuleSize++;
                     continue;
                 }
 
-                todoList.add(rule);
+                if (DataRuleType.ORG == type) {
+                    curOrgDataRule = rule;
+                }
+
+                todoRuleList.add(rule);
             }
 
             // 用户与学习中心的数据权限
@@ -89,18 +96,37 @@ public class InitUserDataRule implements Task {
                 rule.setRefId(user.getOrgId());// 关联学习中心ID
                 rule.setEnabled(true);
 
+                if (curOrgDataRule != null) {
+                    List<String> roles = this.queryUserRoles(user.getId());
+                    boolean isLearnCenterUser = roles.contains("LC_USER");
+                    if (isLearnCenterUser) {
+                        curOrgDataRule.setEnabled(false);
+                    }
+                }
+
                 if (this.existUserDataRule(rule)) {
-                    existSize++;
+                    existRuleSize++;
                     continue;
                 }
 
-                todoList.add(rule);
+                todoRuleList.add(rule);
             }
         }
 
-        log.info(String.format("baseUserSize = %s, existSize = %s, todoSize = %s \n",
-                list.size(), existSize, todoList.size()));
-        this.addUserDataRules(todoList);
+        log.info(String.format("userSize = %s, existRuleSize = %s, todoRuleSize = %s \n",
+                userList.size(), existRuleSize, todoRuleList.size()));
+        this.addUserDataRules(todoRuleList);
+    }
+
+    private List<String> queryUserRoles(Long userId) {
+        StringBuilder querySql = new StringBuilder()
+                .append("select r.code from ec_b_user_role_relation ur ")
+                .append("inner join ec_b_role r on r.id = ur.role_id ")
+                .append("where ur.user_id = ").append(userId);
+
+        List<String> roles = jdbcTemplate.queryForList(querySql.toString(), String.class);
+        log.debug(String.format("userId = %s, roles = %s", userId, StringUtils.join(roles, ",")));
+        return roles;
     }
 
     private boolean existUserDataRule(UserDataRuleInfo rule) {