Ver código fonte

数据权限1

pengjing 11 meses atrás
pai
commit
e7af23d1e7

+ 12 - 1
doc/待更新脚本

@@ -31,4 +31,15 @@ insert pc_profession values(UUID(),'','文化/传媒',21,1);
 insert pc_profession values(UUID(),'','高级管理',22,1);
 insert pc_profession values(UUID(),'','咨询/法律/翻译',23,1);
 insert pc_profession values(UUID(),'','酒店/旅游',24,1);
-insert pc_profession values(UUID(),'','政府机构/农业',25,1);
+insert pc_profession values(UUID(),'','政府机构/农业',25,1);
+
+-- 2024.4.16
+delete from sys_dictionary_item where DictionaryCode='DataRange';
+
+INSERT INTO sys_dictionary_item (DictionaryItemID, Code, DictionaryCode, Value, Name, OrderNo, RecordStatus, IsEditable) VALUES ('f06c44b6-a77a-11ed-a6c5-7085c2a9999e', '', 'DataRange', 0, '全部', 0, 1, 0);
+INSERT INTO sys_dictionary_item (DictionaryItemID, Code, DictionaryCode, Value, Name, OrderNo, RecordStatus, IsEditable) VALUES ('f06cf371-a77a-11ed-a6c5-7085c2a9999e', '', 'DataRange', 1, '市', 10, 1, 0);
+INSERT INTO sys_dictionary_item (DictionaryItemID, Code, DictionaryCode, Value, Name, OrderNo, RecordStatus, IsEditable) VALUES ('f06cf371-a77a-11ed-a6c5-7185c2a9999e', '', 'DataRange', 2, '区', 20, 1, 0);
+INSERT INTO sys_dictionary_item (DictionaryItemID, Code, DictionaryCode, Value, Name, OrderNo, RecordStatus, IsEditable) VALUES ('f06cf371-a77a-11ed-a6c5-7285c2a9999e', '', 'DataRange', 3, '机构', 30, 1, 0);
+INSERT INTO sys_dictionary_item (DictionaryItemID, Code, DictionaryCode, Value, Name, OrderNo, RecordStatus, IsEditable) VALUES ('f06cf371-a77a-11ed-a6c5-7385c2a9999e', '', 'DataRange', 4, '驿站', 40, 1, 0);
+INSERT INTO sys_dictionary_item (DictionaryItemID, Code, DictionaryCode, Value, Name, OrderNo, RecordStatus, IsEditable) VALUES ('f06cf371-a77a-11ed-a6c5-7485c2a9999e', '', 'DataRange', 5, '企业', 50, 1, 0);
+INSERT INTO sys_dictionary_item (DictionaryItemID, Code, DictionaryCode, Value, Name, OrderNo, RecordStatus, IsEditable) VALUES ('f06cf371-a77a-11ed-a6c5-7585c3a9999e', '', 'DataRange', 6, '本人', 60, 1, 0);

+ 28 - 8
src/main/java/com/hz/employmentsite/enums/DataRangeEnum.java

@@ -1,11 +1,31 @@
 package com.hz.employmentsite.enums;
 
-public interface DataRangeEnum {
-    int City = 6;
-    int Region = 5;
-    int Institution = 4;
-    int Site = 3;
-    int Company = 2;
-    int SELF = 1;
-    int ALL = 0;
+public enum DataRangeEnum {
+    ALL(0),
+    City(1),
+    Region(2),
+    Institution(3),
+    Site(4),
+    Company(5),
+    SELF(6);
+
+    private final int value;
+
+    DataRangeEnum(int value) {
+        this.value = value;
+    }
+
+    public int getValue() {
+        return value;
+    }
+
+    public static DataRangeEnum getDataRangeByValue(int value) {
+        for (DataRangeEnum dataRangeEnum : DataRangeEnum.values()) {
+            if (dataRangeEnum.value == value) {
+                return dataRangeEnum;
+            }
+        }
+        return null;
+    }
+
 }

+ 15 - 13
src/main/java/com/hz/employmentsite/services/impl/UserServiceImpl.java

@@ -63,27 +63,29 @@ public class UserServiceImpl implements UserService {
                     DataRange menuDataRange = new DataRange();
                     menuDataRange.setMenuNo(key);
                     menuDataRange.setRange(dataRangeID);
+                    DataRangeEnum dataRangeEnum = DataRangeEnum.getDataRangeByValue(dataRangeID);
 
-                    switch (dataRangeID) {
-                        case DataRangeEnum.SELF:
-                            menuDataRange.setRangeIDList(List.of(userID));
+                    switch (dataRangeEnum) {
+                        case ALL:
                             break;
-                        case DataRangeEnum.Company:
-                            menuDataRange.setRangeIDList(userCompanyList);
+                        case City:
+                            menuDataRange.setRangeIDList(userCityList);
                             break;
-                       case DataRangeEnum.Site:
-                            menuDataRange.setRangeIDList(userSiteList);
+                        case Region:
+                            menuDataRange.setRangeIDList(userRegionList);
                             break;
-                       case DataRangeEnum.Institution:
+                        case Institution:
                             menuDataRange.setRangeIDList(userInstitutionList);
                             break;
-                       case DataRangeEnum.Region:
-                            menuDataRange.setRangeIDList(userRegionList);
+                        case Site:
+                            menuDataRange.setRangeIDList(userSiteList);
                             break;
-                        case DataRangeEnum.City:
-                            menuDataRange.setRangeIDList(userCityList);
+                        case Company:
+                            menuDataRange.setRangeIDList(userCompanyList);
+                            break;
+                        case SELF:
+                            menuDataRange.setRangeIDList(List.of(userID));
                             break;
-                        case DataRangeEnum.ALL:
                         default:
                             break;
                     }

+ 49 - 518
src/main/java/com/hz/employmentsite/util/datarange/DataRangeInterceptor.java

@@ -16,6 +16,7 @@ import org.apache.ibatis.plugin.Invocation;
 import org.apache.ibatis.plugin.Signature;
 import org.apache.ibatis.session.ResultHandler;
 import org.apache.ibatis.session.RowBounds;
+
 import java.lang.reflect.Field;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -74,17 +75,11 @@ public class DataRangeInterceptor implements Interceptor {
         } else {
             String whereClause = "";
             try {
-                Integer userTypeID = this.accountService.getLoginUserTypeID();
-                //1 求职者 2企业人员 3驿站工作者 4驿站机构人员 5区级管理员 6市级管理员
-                if (userTypeID == 3 || userTypeID == 4) {
-                    whereClause = getJoinSqlBySiteUser(entityClass,userTypeID);
-                }else{
-                    DataRange dataRange = this.dataRangeUtils.getCurrentRange();
-                    if (dataRange == null || dataRange.getRange() == DataRangeEnum.ALL) {
-                        return invocation.proceed();
-                    }
-                    whereClause = getJoinSql(entityClass, dataRange);
+                DataRange dataRange = this.dataRangeUtils.getCurrentRange();
+                if (dataRange == null || dataRange.getRange() == DataRangeEnum.ALL.getValue()) {
+                    return invocation.proceed();
                 }
+                whereClause = getJoinSql(entityClass, dataRange);
 
                 if (!whereClause.equals("")) {
                     mainSql = "select x.* from" +
@@ -97,165 +92,52 @@ public class DataRangeInterceptor implements Interceptor {
             }
 
         }
-        return executor.query(ms, parameter, rowBounds, resultHandler, cacheKey, boundSql);
-    }
-
-    private String getJoinSql(Class entityClass, DataRange dataRange) {
-        Field institutionIDField = Arrays.stream(entityClass.getDeclaredFields()).filter(x -> x.getAnnotationsByType(InstitutionID.class).length > 0)
-                .findFirst().orElse(null);
-        if (institutionIDField != null) {
-            return this.getJoinSqlByInstitution(institutionIDField, dataRange);
-        }
-        Field siteIDField = Arrays.stream(entityClass.getDeclaredFields()).filter(x -> x.getAnnotationsByType(SiteID.class).length > 0)
-                .findFirst().orElse(null);
-        if (siteIDField != null) {
-            return this.getJoinSqlBySite(siteIDField, dataRange);
-        }
-        Field siteUserField = Arrays.stream(entityClass.getDeclaredFields()).filter(x -> x.getAnnotationsByType(SiteUserID.class).length > 0)
-                .findFirst().orElse(null);
-        if (siteUserField != null) {
-            return this.getJoinSqlBySiteUser(siteUserField, dataRange);
-        }
-        Field companyIDField = Arrays.stream(entityClass.getDeclaredFields()).filter(x -> x.getAnnotationsByType(CompanyID.class).length > 0)
-                .findFirst().orElse(null);
-        if (companyIDField != null) {
-            return this.getJoinSqlByCompany(companyIDField, dataRange);
-        }
-        Field postIDField = Arrays.stream(entityClass.getDeclaredFields()).filter(x -> x.getAnnotationsByType(PostID.class).length > 0)
-                .findFirst().orElse(null);
-        if (postIDField != null) {
-            return this.getJoinSqlByPost(postIDField, dataRange);
-        }
-        Field jobUserIDField = Arrays.stream(entityClass.getDeclaredFields()).filter(x -> x.getAnnotationsByType(JobUserID.class).length > 0)
-                .findFirst().orElse(null);
-        if (jobUserIDField != null) {
-            return this.getJoinSqlByJobUser(jobUserIDField, dataRange);
-        }
-        Field JobHuntIDField = Arrays.stream(entityClass.getDeclaredFields()).filter(x -> x.getAnnotationsByType(JobHuntID.class).length > 0)
-                .findFirst().orElse(null);
-        if (JobHuntIDField != null) {
-            return this.getJoinSqlByJobHunt(JobHuntIDField, dataRange);
-        }
-        Field workIDField = Arrays.stream(entityClass.getDeclaredFields()).filter(x -> x.getAnnotationsByType(DoWorkID.class).length > 0)
-                .findFirst().orElse(null);
-        if (workIDField != null) {
-            return this.getJoinSqlByLog(workIDField, dataRange);
-        }
-        Field taskIDField = Arrays.stream(entityClass.getDeclaredFields()).filter(x -> x.getAnnotationsByType(DoTaskID.class).length > 0)
-                .findFirst().orElse(null);
-        if (taskIDField != null) {
-            return this.getJoinSqlByTask(taskIDField, dataRange);
-        }
-        return "";
-    }
-
-    private String getJoinSqlBySiteUser(Class entityClass,Integer userTypeID) {
-
-        Field sysUserField = Arrays.stream(entityClass.getDeclaredFields()).filter(x -> x.getAnnotationsByType(UserID.class).length > 0)
-                .findFirst().orElse(null);
-        if (sysUserField != null) {
-            return  "inner join sys_user sysUser on  x." + sysUserField.getName() + "= sysUser.UserID " +
-                    "where sysUser.UserID='" + accountService.getLoginUserID() + "'";
-        }
-
-        Field institutionField = Arrays.stream(entityClass.getDeclaredFields()).filter(x -> x.getAnnotationsByType(InstitutionID.class).length > 0)
-                .findFirst().orElse(null);
-        if (institutionField != null) {
-            return  "inner join pc_site_institution st on  x." + institutionField.getName() + "= st.InstitutionID " +
-                    "inner join pc_site_user siteUser on st.SiteID = siteUser.SiteID " +
-                    "where siteUser.UserID = '" + accountService.getLoginUserID() + "'";
-        }
-
-        Field siteField = Arrays.stream(entityClass.getDeclaredFields()).filter(x -> x.getAnnotationsByType(SiteID.class).length > 0)
-                .findFirst().orElse(null);
-        if (siteField != null) {
-            return  "inner join pc_site_user siteUser on  x." + siteField.getName() + "= siteUser.SiteID " +
-                    "where siteUser.UserID='" + accountService.getLoginUserID() + "'";
-        }
-
-        Field siteUserField = Arrays.stream(entityClass.getDeclaredFields()).filter(x -> x.getAnnotationsByType(SiteUserID.class).length > 0)
-                .findFirst().orElse(null);
-        Field workLogField = Arrays.stream(entityClass.getDeclaredFields()).filter(x -> x.getAnnotationsByType(DoWorkID.class).length > 0)
-                .findFirst().orElse(null);
-        Field workTaskField = Arrays.stream(entityClass.getDeclaredFields()).filter(x -> x.getAnnotationsByType(DoTaskID.class).length > 0)
-                .findFirst().orElse(null);
-
-        if(userTypeID ==3){
-            //驿站工作者只能查询自己
-            if (siteUserField != null) {
-                return  "inner join pc_site_user siteUser on  x." + siteUserField.getName() + "= siteUser.SiteUserID " +
-                        "where siteUser.UserID='" + accountService.getLoginUserID() + "'";
-            }
-            if (workLogField != null) {
-                return  "inner join pc_dowork doWork on  x." + workLogField.getName() + "= doWork.DoWorkID " +
-                        "inner join pc_site_user siteUser on doWork.SiteUserID = siteUser.SiteUserID " +
-                        "where siteUser.UserID='" + accountService.getLoginUserID() + "'";
-            }
-            if (workTaskField != null) {
-                return  "inner join pc_dotask_user taskUser on  x." + workTaskField.getName() + "= taskUser.DoTaskID " +
-                        "inner join pc_site_user siteUser on taskUser.SiteUserID = siteUser.SiteUserID " +
-                        "where siteUser.UserID='" + accountService.getLoginUserID() + "'";
-            }
-        }else{
-            //驿站机构人员可以查询驿站内所有人员
-            if (siteUserField != null) {
-                return  " where x." + siteUserField.getName() + " in (" +
-                        " select siteUser.SiteUserID from pc_site_user siteUser where siteUser.SiteID in (" +
-                        " select theSiteUser.SiteID  from pc_site_user theSiteUser"+
-                        " where  theSiteUser.UserID='" + accountService.getLoginUserID() + "'))";
-
-            }
-            if (workLogField != null) {
-                return  " where x." + workLogField.getName() + " in (" +
-                        " select doWork.DoWorkID from pc_dowork doWork where doWork.SiteUserID in (" +
-                        " select siteUser.SiteUserID from pc_site_user siteUser where siteUser.SiteID in (" +
-                        " select theSiteUser.SiteID  from pc_site_user theSiteUser"+
-                        " where  theSiteUser.UserID='" + accountService.getLoginUserID() + "')))";
-            }
-            if (workTaskField != null) {
-                return  " where x." + workTaskField.getName() + " in (" +
-                        " select taskUser.DoTaskID from pc_dotask_user taskUser where taskUser.SiteUserID in (" +
-                        " select siteUser.SiteUserID from pc_site_user siteUser where siteUser.SiteID in (" +
-                        " select theSiteUser.SiteID  from pc_site_user theSiteUser"+
-                        " where  theSiteUser.UserID='" + accountService.getLoginUserID() + "')))";
-            }
-        }
-
-        Field companyField = Arrays.stream(entityClass.getDeclaredFields()).filter(x -> x.getAnnotationsByType(CompanyID.class).length > 0)
-                .findFirst().orElse(null);
-        if (companyField != null) {
-            return  "inner join pc_company company on  x." + companyField.getName() + "= company.CompanyID " +
-                    "inner join pc_site_user siteUser on company.SiteID = siteUser.SiteID " +
-                    "where siteUser.UserID='" + accountService.getLoginUserID() + "'";
+        try{
+            return executor.query(ms, parameter, rowBounds, resultHandler, cacheKey, boundSql);
         }
-
-        Field postField = Arrays.stream(entityClass.getDeclaredFields()).filter(x -> x.getAnnotationsByType(PostID.class).length > 0)
-                .findFirst().orElse(null);
-        if (postField != null) {
-            return  "inner join pc_post post on  x." + postField.getName() + "= post.PostID " +
-                    "inner join pc_company company on post.CompanyID = company.CompanyID " +
-                    "inner join pc_site_user siteUser on company.SiteID = siteUser.SiteID " +
-                    "where siteUser.UserID='" + accountService.getLoginUserID() + "'";
+        catch (Exception ex){
+            return invocation.proceed();
         }
 
-        Field jobUserField = Arrays.stream(entityClass.getDeclaredFields()).filter(x -> x.getAnnotationsByType(JobUserID.class).length > 0)
-                .findFirst().orElse(null);
-        if (jobUserField != null) {
-            return  "inner join pc_jobuser jobUser on  x." + jobUserField.getName() + "= jobUser.JobUserID " +
-                    "inner join pc_site_user siteUser on jobUser.SiteID = siteUser.SiteID " +
-                    "where siteUser.UserID='" + accountService.getLoginUserID() + "'";
-        }
+    }
 
-        Field jobHuntField = Arrays.stream(entityClass.getDeclaredFields()).filter(x -> x.getAnnotationsByType(JobHuntID.class).length > 0)
-                .findFirst().orElse(null);
-        if (jobHuntField != null) {
-            return  "inner join pc_jobhunt jobHunt on  x." + jobHuntField.getName() + "= jobHunt.JobHuntID " +
-                    "inner join pc_jobuser jobUser on jobHunt.JobUserID = jobUser.JobUserID " +
-                    "inner join pc_site_user siteUser on jobUser.SiteID = siteUser.SiteID " +
-                    "where siteUser.UserID='" + accountService.getLoginUserID() + "'";
-        }
+    private String getJoinSql(Class entityClass, DataRange dataRange) {
+        return getJoinSqlByField(getField(entityClass, dataRange), dataRange);
+    }
 
-        return "";
+    private Field getField(Class entityClass, DataRange dataRange) {
+        Field field = null;
+
+        DataRangeEnum dataRangeEnum = DataRangeEnum.getDataRangeByValue(dataRange.getRange());
+
+        switch (dataRangeEnum) {
+            case City:
+                break;
+            case Region:
+                field = Arrays.stream(entityClass.getDeclaredFields()).filter(x -> x.getAnnotationsByType(RegionID.class).length > 0)
+                        .findFirst().orElse(null);
+                break;
+            case Institution:
+                field = Arrays.stream(entityClass.getDeclaredFields()).filter(x -> x.getAnnotationsByType(InstitutionID.class).length > 0)
+                        .findFirst().orElse(null);
+                break;
+            case Site:
+                field = Arrays.stream(entityClass.getDeclaredFields()).filter(x -> x.getAnnotationsByType(SiteID.class).length > 0)
+                        .findFirst().orElse(null);
+                break;
+            case Company:
+                field = Arrays.stream(entityClass.getDeclaredFields()).filter(x -> x.getAnnotationsByType(CompanyID.class).length > 0)
+                        .findFirst().orElse(null);
+                break;
+            case SELF:
+                field = Arrays.stream(entityClass.getDeclaredFields()).filter(x -> x.getAnnotationsByType(SiteID.class).length > 0)
+                        .findFirst().orElse(null);
+                break;
+            default:
+                break;
+        }
+
+        return field;
     }
 
     private String getInStatement(List<String> rangeIDList) {
@@ -270,364 +152,13 @@ public class DataRangeInterceptor implements Interceptor {
     }
 
 
-    //运营机构数据筛选
-    private String getJoinSqlByInstitution(Field keyField, DataRange dataRange) {
-        String keyFieldName = keyField.getName();
-        String inStatement = getInStatement(dataRange.getRangeIDList());
-        if (!inStatement.trim().equals("")) {
-            switch (dataRange.getRange()) {
-                case DataRangeEnum.City:
-                case DataRangeEnum.Region:
-                    return  " where 1=1";
-                case DataRangeEnum.Institution:
-                    return  " where x." + keyFieldName + "in (" +  inStatement + ")" ;
-                case DataRangeEnum.Company:
-                    return  " where x." + keyFieldName + " in (" +
-                            " select siteInst.InstitutionID from pc_site_institution siteInst where siteInst.SiteID in (" +
-                            " select company.SiteID from pc_company company" +
-                            " where  company.CompanyID in (" + inStatement + "))" +
-                            ")";
-                case DataRangeEnum.Site:
-                    return  " where x." + keyFieldName + " in (" +
-                            " select siteInst.InstitutionID from pc_site_institution"+
-                            " where  siteInst.SiteID in (" + inStatement + ")" +
-                            ")";
-                case DataRangeEnum.SELF:
-                    return  " where x." + keyFieldName + " in (" +
-                            " select siteInst.InstitutionID from pc_site_institution siteInst where siteInst.SiteID in (" +
-                            " select siteUser.SiteID from pc_site_user siteUser" +
-                            " where  siteUser.UserID in (" + inStatement + "))" +
-                            ")";
-                default:
-                    return "";
-            }
-        } else {
-            return "where 1=1";
-        }
-    }
-    //驿站站点数据筛选
-    private String getJoinSqlBySite(Field keyField, DataRange dataRange) {
-        String keyFieldName = keyField.getName();
-        String inStatement = getInStatement(dataRange.getRangeIDList());
-        if (!inStatement.trim().equals("")) {
-            switch (dataRange.getRange()) {
-                case DataRangeEnum.City:
-                case DataRangeEnum.Region:
-                    return  " where 1=1";
-                case DataRangeEnum.Institution:
-                    return  " where x." + keyFieldName + " in (" +
-                            " select siteInst.SiteID from pc_site_institution siteInst"+
-                            " where  siteInst.InstitutionID in (" + inStatement + ")" +
-                            ")";
-                case DataRangeEnum.Company:
-                    return  " where x." + keyFieldName + " in (" +
-                            " select company.SiteID from pc_company company"+
-                            " where  company.CompanyID in (" + inStatement + ")" +
-                            ")";
-                case DataRangeEnum.Site:
-                    return  " where x." + keyFieldName + " in (" +  inStatement + ")" ;
-                case DataRangeEnum.SELF:
-                    return  " where x." + keyFieldName + " in (" +
-                            " select siteUser.SiteID from pc_site_user siteUser"+
-                            " where  siteUser.UserID in (" + inStatement + ")" +
-                            ")";
-                default:
-                    return "";
-            }
-        }else {
+    private String getJoinSqlByField(Field keyField, DataRange dataRange) {
+        if (keyField == null || dataRange.getRangeIDList() == null || dataRange.getRangeIDList().size() == 0)
             return "where 1=1";
-        }
-    }
-    //站点人员数据筛选
-    private String getJoinSqlBySiteUser(Field keyField, DataRange dataRange) {
-        String keyFieldName = keyField.getName();
-        String inStatement = getInStatement(dataRange.getRangeIDList());
-        if (!inStatement.trim().equals("")) {
-            switch (dataRange.getRange()) {
-                case DataRangeEnum.City:
-                case DataRangeEnum.Region:
-                    return  " where 1=1";
-                //若数据范围为机构,则查询属于当前登录人的驿站所属机构下的所有驿站人员信息
-                case DataRangeEnum.Institution:
-                    return  " where x." + keyFieldName + " in (" +
-                            " select siteUser.SiteUserID from pc_site_user siteUser where siteUser.SiteID in (" +
-                            " select siteInst.SiteID from pc_site_institution siteInst" +
-                            " where  siteInst.InstitutionID in (" + inStatement + ")" +
-                            ")";
-                //若数据范围为公司,则查询属于当前登录人的驿站所属公司下的所有驿站人员信息
-                case DataRangeEnum.Company:
-                    return  " where x." + keyFieldName + " in (" +
-                            " select siteUser.SiteUserID from pc_site_user siteUser where siteUser.SiteID in (" +
-                            " select company.SiteID from pc_company company" +
-                            " where  company.CompanyID in (" + inStatement + "))" +
-                            ")";
-                //若数据范围为驿站,则查询属于当前登录人的所属驿站的所有驿站人员信息
-                case DataRangeEnum.Site:
-                    return  " where x." + keyFieldName + " in (" +
-                            " select siteUser.SiteUserID from pc_site_user siteUser" +
-                            " where  siteUser.SiteID in (" + inStatement + ")" +
-                            ")";
-                //若数据范围为本人,则查询属于当前登录人绑定的驿站人员信息
-                case DataRangeEnum.SELF:
-                    return  " where x." + keyFieldName + " in (" +
-                            " select siteUser.SiteUserID from pc_site_user siteUser" +
-                            " where  siteUser.UserID in (" + inStatement + ")" +
-                            ")";
-                default:
-                    return "";
-            }
-        }else {
-            return "where 1=1";
-        }
-    }
 
-
-
-    //公司信息数据筛选
-    private String getJoinSqlByCompany(Field keyField, DataRange dataRange) {
         String keyFieldName = keyField.getName();
         String inStatement = getInStatement(dataRange.getRangeIDList());
-        if (!inStatement.trim().equals("")) {
-            switch (dataRange.getRange()) {
-                case DataRangeEnum.City:
-                case DataRangeEnum.Region:
-                    return  " where 1=1";
-                case DataRangeEnum.Institution:
-                    return  " where x." + keyFieldName + " in (" +
-                            " select company.CompanyID from pc_company company where company.SiteID in (" +
-                            " select siteInst.SiteID from pc_site_institution siteInst "+
-                            " where  siteInst.InstitutionID in (" +  inStatement + "))" +
-                            ")";
-                case DataRangeEnum.Company:
-                    return  " where x." + keyFieldName + "in (" +  inStatement + ")" ;
-                case DataRangeEnum.Site:
-                    return  " where x." + keyFieldName + " in (" +
-                            " select company.CompanyID from pc_company company " +
-                            " where  company.SiteID in (" + inStatement + ")" +
-                            ")";
-                case DataRangeEnum.SELF:
-                    return " where x." + keyFieldName + " in (" +
-                            " select company.CompanyID from pc_company company where company.SiteID in (" +
-                            " select siteUser.SiteID from pc_site_user siteUser"+
-                            " where  siteUser.UserID in (" + inStatement + ")" +
-                            ")";
-                default:
-                    return "";
-            }
-        }else {
-            return "where 1=1";
-        }
-    }
-    //岗位信息数据筛选
-    private String getJoinSqlByPost(Field keyField, DataRange dataRange) {
-        String keyFieldName = keyField.getName();
-        String inStatement = getInStatement(dataRange.getRangeIDList());
-        if (!inStatement.trim().equals("")) {
-            switch (dataRange.getRange()) {
-                case DataRangeEnum.Region:
-                case DataRangeEnum.City:
-                    return  " where 1=1";
-                case DataRangeEnum.Institution:
-                    return  " where x." + keyFieldName + " in (" +
-                            " select post.PostID from pc_post post where post.CompanyID in (" +
-                            " select company.CompanyID from pc_company company where company.SiteID in ("+
-                            " select siteInst.SiteID from pc_site_institution siteInst "+
-                            " where  siteInst.InstitutionID in ("+ inStatement + ")))" +
-                            ")";
-                case DataRangeEnum.Site:
-                    return  " where x." + keyFieldName + " in (" +
-                            " select post.PostID from pc_post post where post.CompanyID in (" +
-                            " select company.CompanyID from pc_company company"+
-                            " where  company.SiteID in (" + inStatement + "))" +
-                            ")";
-                case DataRangeEnum.Company:
-                    return  " where x." + keyFieldName + " in (" +
-                            " select post.PostID from pc_post post" +
-                            " where  post.CompanyID in (" + inStatement + ")))" +
-                            ")";
-                case DataRangeEnum.SELF:
-                    return  " where x." + keyFieldName + " in (" +
-                            " select post.PostID from pc_post post where post.CompanyID in (" +
-                            " select company.CompanyID from pc_company company where company.SiteID in (" +
-                            " select siteUser.SiteID from pc_site_user siteUser" +
-                            " where  siteUser.UserID in (" + inStatement + ")))" +
-                            ")";
-                default:
-                    return "";
-            }
-        } else {
-            return "where 1=1";
-        }
-    }
-
 
-    //求职人员信息数据筛选
-    private String getJoinSqlByJobUser(Field keyField, DataRange dataRange) {
-        String keyFieldName = keyField.getName();
-        String inStatement = getInStatement(dataRange.getRangeIDList());
-        if (!inStatement.trim().equals("")) {
-            switch (dataRange.getRange()) {
-                case DataRangeEnum.City:
-                case DataRangeEnum.Region:
-                    return  " where 1=1";
-                case DataRangeEnum.Institution:
-                    return  " where x." + keyFieldName + " in (" +
-                            " select jobUser.JobUserID from pc_jobuser jobUser where jobUser.SiteID in (" +
-                            " select siteInst.SiteID from pc_site_institution siteInst "+
-                            " where  siteInst.InstitutionID in (" +  inStatement + "))" +
-                            ")";
-                case DataRangeEnum.Company:
-                    return  " where x." + keyFieldName + " in (" +
-                            " select jobUser.JobUserID from pc_jobuser jobUser where jobUser.SiteID in (" +
-                            " select company.SiteID from pc_company company "+
-                            " where  company.CompanyID in (" +  inStatement + "))" +
-                            ")";
-                case DataRangeEnum.Site:
-                    return  " where x." + keyFieldName + " in (" +
-                            " select jobUser.JobUserID from pc_jobuser jobUser" +
-                            " where  jobUser.SiteID in (" + inStatement + ")" +
-                            ")";
-                case DataRangeEnum.SELF:
-                    return " where x." + keyFieldName + " in (" +
-                            " select jobUser.JobUserID from pc_jobuser jobUser where jobUser.siteID in (" +
-                            " select siteUser.SiteID from pc_site_user siteUser"+
-                            " where  siteUser.UserID in (" + inStatement + "))" +
-                            ")";
-                default:
-                    return "";
-            }
-        }else {
-            return "where 1=1";
-        }
-    }
-    //求职意向信息数据筛选
-    private String getJoinSqlByJobHunt(Field keyField, DataRange dataRange) {
-        String keyFieldName = keyField.getName();
-        String inStatement = getInStatement(dataRange.getRangeIDList());
-        if (!inStatement.trim().equals("")) {
-            switch (dataRange.getRange()) {
-                case DataRangeEnum.City:
-                case DataRangeEnum.Region:
-                    return  " where 1=1";
-                case DataRangeEnum.Institution:
-                    return  " where x." + keyFieldName + " in (" +
-                            " select jobHunt.JobHuntID from pc_jobhunt jobHunt where jobHunt.JobUserID in (" +
-                            " select jobUser.JobUserID from pc_jobuser jobUser where jobUser.siteID in (" +
-                            " select siteInst.SiteID from pc_site_institution siteInst "+
-                            " where  siteInst.InstitutionID in (" +  inStatement + ")))" +
-                            ")";
-                case DataRangeEnum.Company:
-                    return  " where x." + keyFieldName + " in (" +
-                            " select jobHunt.JobHuntID from pc_jobhunt jobHunt where jobHunt.JobUserID in (" +
-                            " select jobUser.JobUserID from pc_jobuser jobUser where jobUser.SiteID in (" +
-                            " select company.SiteID from pc_company company "+
-                            " where  company.CompanyID in (" +  inStatement + ")))" +
-                            ")";
-                case DataRangeEnum.Site:
-                    return  " where x." + keyFieldName + " in (" +
-                            " select jobHunt.JobHuntID from pc_jobhunt jobHunt where jobHunt.JobUserID in (" +
-                            " select jobUser.JobUserID from pc_jobuser jobUser" +
-                            " where  jobUser.SiteID in (" + inStatement + "))" +
-                            ")";
-                case DataRangeEnum.SELF:
-                    return " where x." + keyFieldName + " in (" +
-                            " select jobHunt.JobHuntID from pc_jobhunt jobHunt where jobHunt.JobUserID in (" +
-                            " select jobUser.JobUserID from pc_jobuser jobUser where jobUser.siteID in (" +
-                            " select siteUser.SiteID from pc_site_user siteUser"+
-                            " where  siteUser.UserID in (" + inStatement + ")))" +
-                            ")";
-                default:
-                    return "";
-            }
-        }else {
-            return "where 1=1";
-        }
-    }
-
-
-
-    //工作日志数据筛选
-    private String getJoinSqlByLog(Field keyField, DataRange dataRange) {
-        String keyFieldName = keyField.getName();
-        String inStatement = getInStatement(dataRange.getRangeIDList());
-        if (!inStatement.trim().equals("")) {
-            switch (dataRange.getRange()) {
-                case DataRangeEnum.City:
-                case DataRangeEnum.Region:
-                    return  " where 1=1";
-                case DataRangeEnum.Institution:
-                    return  " where x." + keyFieldName + " in (" +
-                            " select workLog.DoWorkID from pc_dowork workLog where workLog.SiteUserID in (" +
-                            " select siteUser.SiteUserID from pc_site_user siteUser where siteUser.SiteID in (" +
-                            " select siteInst.SiteID from pc_site_institution siteInst" +
-                            " where  siteInst.InstitutionID in (" + inStatement + ")))" +
-                            ")";
-                case DataRangeEnum.Company:
-                    return  " where x." + keyFieldName + " in (" +
-                            " select workLog.DoWorkID from pc_dowork workLog where workLog.SiteUserID in (" +
-                            " select siteUser.SiteUserID from pc_site_user siteUser where siteUser.SiteID in (" +
-                            " select company.SiteID from pc_company company" +
-                            " where  company.CompanyID in (" + inStatement + ")))" +
-                            ")";
-                case DataRangeEnum.Site:
-                    return  " where x." + keyFieldName + " in (" +
-                            " select workLog.DoWorkID from pc_dowork workLog where workLog.SiteUserID in (" +
-                            " select siteUser.SiteUserID from pc_site_user siteUser "+
-                            " where  siteUser.SiteID in (" + inStatement + "))" +
-                            ")";
-                case DataRangeEnum.SELF:
-                    return  " where x." + keyFieldName + " in (" +
-                            " select workLog.DoWorkID from pc_dowork workLog where workLog.SiteUserID in (" +
-                            " select siteUser.SiteUserID from pc_site_user siteUser "+
-                            " where  siteUser.UserID in (" + inStatement + "))" +
-                            ")";
-                default:
-                    return "";
-            }
-        } else {
-            return "where 1=1";
-        }
-    }
-    //工作任务数据筛选
-    private String getJoinSqlByTask(Field keyField, DataRange dataRange) {
-        String keyFieldName = keyField.getName();
-        String inStatement = getInStatement(dataRange.getRangeIDList());
-        if (!inStatement.trim().equals("")) {
-            switch (dataRange.getRange()) {
-                case DataRangeEnum.City:
-                case DataRangeEnum.Region:
-                    return " where 1=1";
-                case DataRangeEnum.Institution:
-                    return  " where x." + keyFieldName + " in (" +
-                            " select taskUser.DoTaskID from pc_dotask_user taskUser where taskUser.SiteUserID in ("+
-                            " select siteUser.SiteUserID from pc_site_user siteUser where siteUser.SiteID in ("+
-                            " select siteInst.SiteID from pc_site_institution siteInst"+
-                            " where  siteInst.InstitutionID in ("+ inStatement + ")))" +
-                            ")";
-                case DataRangeEnum.Site:
-                    return  " where x." + keyFieldName + " in (" +
-                            " select taskUser.DoTaskID from pc_dotask_user taskUser where  taskUser.SiteUserID in ("+
-                            " select siteUser.SiteUserID from pc_site_user siteUser"+
-                            " where  siteUser.SiteID in ("+ inStatement + ")))" +
-                            ")";
-                case DataRangeEnum.Company:
-                    return  " where x." + keyFieldName + " in (" +
-                            " select taskUser.DoTaskID from pc_dotask_user taskUser where  taskUser.SiteUserID in ("+
-                            " select siteUser.SiteUserID from pc_site_user siteUser where  siteUser.SiteID in ("+
-                            " select company.SiteID from pc_company company"+
-                            " where  company.CompanyID in ("+ inStatement + ")))" +
-                            ")";
-                case DataRangeEnum.SELF:
-                    return  " where x." + keyFieldName + " in (" +
-                            " select taskUser.DoTaskID from pc_dotask_user taskUser where  taskUser.SiteUserID in (" +
-                            " select siteUser.SiteUserID from pc_site_user siteUser "+
-                            " where  siteUser.UserID in (" + inStatement + "))" +
-                            ")";
-                default:
-                    return "";
-            }
-        } else {
-            return "where 1=1";
-        }
+        return " where x." + keyFieldName + " in (" + inStatement + ")";
     }
 }

+ 9 - 0
src/main/java/com/hz/employmentsite/util/datarange/annotations/RegionID.java

@@ -0,0 +1,9 @@
+package com.hz.employmentsite.util.datarange.annotations;
+
+import java.lang.annotation.*;
+
+@Target(ElementType.FIELD)
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+public @interface RegionID {
+}

+ 4 - 0
src/main/java/com/hz/employmentsite/vo/baseSettings/SiteInfoVo.java

@@ -1,5 +1,7 @@
 package com.hz.employmentsite.vo.baseSettings;
 
+import com.hz.employmentsite.util.datarange.annotations.InstitutionID;
+import com.hz.employmentsite.util.datarange.annotations.RegionID;
 import lombok.Data;
 import java.sql.Date;
 import java.util.List;
@@ -12,6 +14,7 @@ public class SiteInfoVo {
     public String siteID;
 
     public String siteCode;
+    @RegionID
     public String regionCode;
     public String regionName;
     public String streetCode;
@@ -26,6 +29,7 @@ public class SiteInfoVo {
     public String fzrMobile;
 
     public String siteInstitutionID;
+    @InstitutionID
     public String institutionID;
     public String institutionName;
     public List<SiteUserVo> manageUsers;

+ 7 - 0
src/main/java/com/hz/employmentsite/vo/baseSettings/SiteUserVo.java

@@ -1,5 +1,7 @@
 package com.hz.employmentsite.vo.baseSettings;
 
+import com.hz.employmentsite.util.datarange.annotations.InstitutionID;
+import com.hz.employmentsite.util.datarange.annotations.RegionID;
 import lombok.Data;
 import java.sql.Date;
 import com.hz.employmentsite.util.datarange.annotations.SiteUserID;
@@ -12,6 +14,7 @@ public class SiteUserVo {
     public String siteUserID;
 
     public String siteUserName;
+    @SiteID
     public String siteID;
     public String siteName;
     public String mobile;
@@ -27,5 +30,9 @@ public class SiteUserVo {
     public Date createTime;
     public String updateBy;
     public Date updateTime;
+    @InstitutionID
+    public String institutionID;
+    @RegionID
+    public String regionCode;
 
 }

+ 7 - 0
src/main/java/com/hz/employmentsite/vo/companyService/CompanyVo.java

@@ -1,5 +1,8 @@
 package com.hz.employmentsite.vo.companyService;
 
+import com.hz.employmentsite.util.datarange.annotations.InstitutionID;
+import com.hz.employmentsite.util.datarange.annotations.RegionID;
+import com.hz.employmentsite.util.datarange.annotations.SiteID;
 import lombok.Data;
 import com.hz.employmentsite.util.datarange.annotations.CompanyID;
 import java.util.Date;
@@ -10,8 +13,10 @@ public class CompanyVo {
     @CompanyID
     public String companyID;
 
+    @SiteID
     public String siteID;
 
+    @RegionID
     public String regionCode;
 
     public String streetCode;
@@ -76,5 +81,7 @@ public class CompanyVo {
 
     public Integer isShortage;
     public String  isShortageName;
+    @InstitutionID
+    public String institutionID;
 
 }

+ 6 - 1
src/main/resources/mapping/cquery/CompanyCQuery.xml

@@ -3,11 +3,16 @@
 <mapper namespace="com.hz.employmentsite.mapper.cquery.CompanyCQuery">
     <select id="getList" resultType="com.hz.employmentsite.vo.companyService.CompanyVo">
         select company.*,city.name as regionName,area.name as streetName,sys_cmodel.Name as companyModelType,
-        (select count(*) from pc_post where CompanyID=company.CompanyID) as postCount,u.`Name` as createUserName from pc_company company
+        (select count(*) from pc_post where CompanyID=company.CompanyID) as postCount,u.`Name` as createUserName
+        ,inSites.InstitutionID as institutionID
+        from pc_company company
         left join sys_user u on u.UserID = company.CreateUserID
         left join (select * from sys_dictionary_item where DictionaryCode ='CompanyModel') sys_cmodel on company.CompanyModel = sys_cmodel.Value
         left join area_code city on company.RegionCode = city.code
         left join area_code area on company.StreetCode = area.code
+        left join pc_site site on company.siteID = site.siteID
+        left join pc_site_institution inSites on site.SiteID = inSites.SiteID
+        left join pc_institution institution on inSites.institutionID = institution.InstitutionID
         where 1=1
         <if test="companyIDList!='' and companyIDList!=null">
             and companyID in (${companyIDList})

+ 5 - 1
src/main/resources/mapping/cquery/SiteUserCQuery.xml

@@ -2,10 +2,14 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.hz.employmentsite.mapper.cquery.UserInfoCQuery">
     <select id="getList" resultType="com.hz.employmentsite.vo.baseSettings.SiteUserVo">
-        select siteUser.*,dic_userRole.Name as RoleName,dic_gender.Name as GenderName,site.SiteName from pc_site_user siteUser
+        select siteUser.*,dic_userRole.Name as RoleName,dic_gender.Name as GenderName,site.SiteName
+        ,inSites.InstitutionID as institutionID,site.regionCode
+        from pc_site_user siteUser
         left join pc_site site on siteUser.siteID = site.siteID
         left join (select * from sys_dictionary_item where DictionaryCode ='UserType' ) dic_userRole  on siteUser.RoleID = dic_userRole.Value
         left join (select * from sys_dictionary_item where DictionaryCode ='Gender' ) dic_gender  on siteUser.Gender = dic_gender.Value
+        left join pc_site_institution inSites on site.SiteID = inSites.SiteID
+        left join pc_institution institution on inSites.institutionID = institution.InstitutionID
         where 1=1
         <if test="siteUserIDList!='' and siteUserIDList!=null">
             and siteUserID in (${siteUserIDList})

+ 5 - 1
src/main/resources/mapping/cquery/SysUserCQuery.xml

@@ -71,7 +71,11 @@
     </select>
 
     <select id="selectUserRegion" resultType="java.lang.String">
-        select distinct code from area_code
+        select distinct a.code from area_code a
+        inner join pc_site s on a.code = s.RegionCode
+        inner join pc_site_user su on s.SiteID = su.SiteID
+        inner join sys_user us on su.UserID = us.UserID
+        where us.UserID = #{userID}
     </select>
 
     <select id="selectUserCity" resultType="java.lang.String">