Browse Source

深爱4A代码初始化

zhouy 4 months ago
parent
commit
46946e921d

BIN
lib/open-common.jar


BIN
lib/open-sdk.jar


+ 19 - 2
pom.xml

@@ -111,7 +111,11 @@
 			<groupId>org.apache.httpcomponents</groupId>
 			<artifactId>httpmime</artifactId>
 		</dependency>
-
+		<dependency>
+			<groupId>org.apache.directory.api</groupId>
+			<artifactId>api-all</artifactId>
+			<version>2.0.0</version> <!-- 请使用最新版本 -->
+		</dependency>
 		<dependency>
 			<groupId>org.oracle</groupId>
 			<artifactId>oracle</artifactId>
@@ -119,7 +123,20 @@
 			<scope>system</scope>
 			<systemPath>${project.basedir}/lib/ojdbc7.jar</systemPath>
 		</dependency>
-
+		<dependency>
+			<groupId>com.netease.qiye</groupId>
+			<artifactId>open-common</artifactId>
+			<version>1.0</version>
+			<scope>system</scope>
+			<systemPath>${project.basedir}/lib/open-common.jar</systemPath>
+		</dependency>
+		<dependency>
+			<groupId>com.netease.qiye</groupId>
+			<artifactId>open-sdk</artifactId>
+			<version>1.0</version>
+			<scope>system</scope>
+			<systemPath>${project.basedir}/lib/open-sdk.jar</systemPath>
+		</dependency>
 		<dependency>
 			<groupId>com.alibaba</groupId>
 			<artifactId>druid</artifactId>

+ 55 - 0
src/main/java/com/uas/eis/core/LdapConnectionManager.java

@@ -0,0 +1,55 @@
+package com.uas.eis.core;
+
+import com.uas.eis.core.config.ADConfig;
+import org.apache.directory.api.ldap.model.exception.LdapException;
+import org.apache.directory.ldap.client.api.LdapConnection;
+import org.apache.directory.ldap.client.api.LdapConnectionConfig;
+import org.apache.directory.ldap.client.api.LdapNetworkConnection;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.stereotype.Component;
+
+@Component
+public class LdapConnectionManager {
+
+    @Autowired
+    @Lazy
+    private ADConfig adConfig;
+
+    private static final ThreadLocal<LdapConnection> connectionHolder = new ThreadLocal<>();
+
+    public LdapConnection getConnection() {
+        LdapConnection connection = connectionHolder.get();
+        if (connection == null || !connection.isConnected()) {
+            // 创建新连接
+            LdapConnectionConfig config = new LdapConnectionConfig();
+            config.setLdapHost(adConfig.getUrl());
+            config.setLdapPort(adConfig.getPort());
+            config.setName(adConfig.getUsername());
+            config.setCredentials(adConfig.getPassword());
+            config.setUseTls(false);
+            config.setUseSsl(false);
+            connection = new LdapNetworkConnection(config);
+            try {
+                connection.bind();
+            } catch (LdapException e) {
+                throw new RuntimeException(e);
+            }
+            connectionHolder.set(connection);
+        }
+        return connection;
+    }
+
+    public void closeConnection() {
+        LdapConnection connection = connectionHolder.get();
+        if (connection != null && connection.isConnected()) {
+            try {
+                connection.close();
+            } catch (Exception e) {
+                e.printStackTrace();
+            } finally {
+                connectionHolder.remove();
+            }
+        }
+    }
+}

+ 54 - 0
src/main/java/com/uas/eis/core/config/ADConfig.java

@@ -0,0 +1,54 @@
+package com.uas.eis.core.config;
+
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+@ConfigurationProperties(prefix = "ad.ldap")
+public class ADConfig {
+    private String url;
+    private Integer port;
+    private String baseDn;
+    private String username;
+    private String password;
+
+    public String getUrl() {
+        return url;
+    }
+
+    public void setUrl(String url) {
+        this.url = url;
+    }
+
+    public Integer getPort() {
+        return port;
+    }
+
+    public void setPort(Integer port) {
+        this.port = port;
+    }
+
+    public String getBaseDn() {
+        return baseDn;
+    }
+
+    public void setBaseDn(String baseDn) {
+        this.baseDn = baseDn;
+    }
+
+    public String getUsername() {
+        return username;
+    }
+
+    public void setUsername(String username) {
+        this.username = username;
+    }
+
+    public String getPassword() {
+        return password;
+    }
+
+    public void setPassword(String password) {
+        this.password = password;
+    }
+}

+ 54 - 0
src/main/java/com/uas/eis/core/config/NetEasyConfig.java

@@ -0,0 +1,54 @@
+package com.uas.eis.core.config;
+
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+@ConfigurationProperties(prefix = "neteasy")
+public class NetEasyConfig {
+    private String appId;
+    private String authCode;
+    private String cropId;
+    private String domain;
+    private String serverUrl;
+
+    public String getAppId() {
+        return appId;
+    }
+
+    public void setAppId(String appId) {
+        this.appId = appId;
+    }
+
+    public String getAuthCode() {
+        return authCode;
+    }
+
+    public void setAuthCode(String authCode) {
+        this.authCode = authCode;
+    }
+
+    public String getCropId() {
+        return cropId;
+    }
+
+    public void setCropId(String cropId) {
+        this.cropId = cropId;
+    }
+
+    public String getDomain() {
+        return domain;
+    }
+
+    public void setDomain(String domain) {
+        this.domain = domain;
+    }
+
+    public String getServerUrl() {
+        return serverUrl;
+    }
+
+    public void setServerUrl(String serverUrl) {
+        this.serverUrl = serverUrl;
+    }
+}

+ 50 - 0
src/main/java/com/uas/eis/entity/HrOrg.java

@@ -0,0 +1,50 @@
+package com.uas.eis.entity;
+
+public class HrOrg {
+    private String or_code;
+    private String or_name;
+    private String or_path;
+    private Integer or_level;
+
+    private String or_status;
+
+    public String getOr_code() {
+        return or_code;
+    }
+
+    public void setOr_code(String or_code) {
+        this.or_code = or_code;
+    }
+
+    public String getOr_name() {
+        return or_name;
+    }
+
+    public void setOr_name(String or_name) {
+        this.or_name = or_name;
+    }
+
+    public String getOr_path() {
+        return or_path;
+    }
+
+    public void setOr_path(String or_path) {
+        this.or_path = or_path;
+    }
+
+    public Integer getOr_level() {
+        return or_level;
+    }
+
+    public void setOr_level(Integer or_level) {
+        this.or_level = or_level;
+    }
+
+    public String getOr_status() {
+        return or_status;
+    }
+
+    public void setOr_status(String or_status) {
+        this.or_status = or_status;
+    }
+}

+ 44 - 0
src/main/java/com/uas/eis/sdk/NetEasySDK.java

@@ -0,0 +1,44 @@
+package com.uas.eis.sdk;
+
+import com.netease.qiye.qiyeopenplatform.common.dto.login.AppLoginResp;
+import com.netease.qiye.qiyeopenplatform.sdk.QiyeOpenPlatSDK;
+import com.netease.qiye.qiyeopenplatform.sdk.QiyeOpenPlatSDKConfig;
+import com.netease.qiye.qiyeopenplatform.sdk.dto.R;
+import com.uas.eis.core.config.NetEasyConfig;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+
+@Component
+public class NetEasySDK {
+    @Resource
+    private NetEasyConfig netEasyConfig;
+
+    private QiyeOpenPlatSDK sdkInstance;
+
+    public void initSDK() {
+        QiyeOpenPlatSDKConfig qiyeOpenPlatSDKConfig = QiyeOpenPlatSDKConfig.builder()
+                //应用ID
+                .appId(netEasyConfig.getAppId())
+                //企业OpenID
+                .orgOpenId(netEasyConfig.getCropId())
+                //服务地址信息
+                .urlPrefix(netEasyConfig.getServerUrl())
+                .build();
+
+        //创建SDK实例
+        this.sdkInstance= new QiyeOpenPlatSDK("dev", qiyeOpenPlatSDKConfig);
+        // 查看文档,应用获取token
+        R<AppLoginResp> appLoginR = sdkInstance.appLogin(netEasyConfig.getAuthCode());
+        sdkInstance.getQiyeOpenPlatSDKConfig().setupToken(appLoginR.getData());
+    }
+
+    public QiyeOpenPlatSDK getSDKInstance(){
+        if (sdkInstance == null) {
+            initSDK();
+        }
+        return sdkInstance;
+    }
+
+    //TODO: refreshToken
+}

+ 257 - 0
src/main/java/com/uas/eis/serviceImpl/ADSyncService.java

@@ -0,0 +1,257 @@
+package com.uas.eis.serviceImpl;
+
+import com.uas.eis.core.LdapConnectionManager;
+import com.uas.eis.core.config.ADConfig;
+import com.uas.eis.dao.BaseDao;
+import com.uas.eis.entity.HrOrg;
+import com.uas.eis.utils.StringUtil;
+import org.apache.directory.api.ldap.model.cursor.CursorException;
+import org.apache.directory.api.ldap.model.cursor.EntryCursor;
+import org.apache.directory.api.ldap.model.entry.*;
+import org.apache.directory.api.ldap.model.exception.LdapException;
+import org.apache.directory.api.ldap.model.exception.LdapInvalidDnException;
+import org.apache.directory.api.ldap.model.message.SearchResultEntry;
+import org.apache.directory.api.ldap.model.message.SearchScope;
+import org.apache.directory.api.ldap.model.name.Rdn;
+import org.apache.directory.api.util.Strings;
+import org.apache.directory.ldap.client.api.LdapConnection;
+import org.apache.directory.api.ldap.model.name.Dn;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.stereotype.Service;
+
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.util.*;
+
+@Service
+public class ADSyncService {
+
+    private final Logger logger = LoggerFactory.getLogger(getClass());
+
+    @Autowired
+    @Lazy
+    private LdapConnectionManager ldapConnectionManager;
+
+    @Autowired
+    private ADConfig adConfig;
+
+    @Autowired
+    private BaseDao baseDao;
+    @Autowired
+    private OrgService orgService;
+
+    public void addOrg(String ouName, LdapConnection connection) throws Exception {
+        if(connection==null || !connection.isConnected()){
+            connection=ldapConnectionManager.getConnection();
+        }
+        Dn dn = new Dn("OU=" + ouName + "," + adConfig.getBaseDn());
+        Entry entry = new DefaultEntry(
+                dn,
+                "objectClass: top",
+                "objectClass: organizationalUnit"
+        );
+        entry.add("description", "SE");
+        connection.add(entry);
+    }
+    public void deleteOrg(String ouName, LdapConnection connection) throws Exception {
+        Dn dn = new Dn("OU=" + ouName + "," + adConfig.getBaseDn());
+        /*connection.delete(dn);
+        // 1. 构建组织DN
+        Dn orgDn = new Dn("OU=" + ouName + "," + adConfig.getBaseDn());
+
+        // 2. 检查组织下是否存在用户
+        String userFilter = FilterBuilder.equal("objectClass", "user").toString();
+        List<Entry> userEntries = (List<Entry>) connection.search(
+                orgDn,
+                userFilter,
+                SearchScope.SUBTREE,
+                "dn"
+        );
+
+        // 3. 如果存在用户,抛出异常阻止删除
+        if (!userEntries.isEmpty()) {
+            logger.info("组织下存在{}个用户,无法删除: {}",userEntries.size(),ouName);
+        }
+        connection.*/
+        // 4. 不存在用户,执行删除
+       // connection.delete(orgDn);
+    }
+    public void updateOrg(String oldOUName,String newOuName, LdapConnection connection) throws Exception {
+        Dn dn = new Dn("OU=" + oldOUName + "," + adConfig.getBaseDn());
+        Rdn newRdn = new Rdn("OU=" + newOuName);
+        connection.rename(dn, newRdn, true);
+    }
+
+    public void addUser(String userName,String displayName, String ouName, String password) throws LdapException, UnsupportedEncodingException {
+        LdapConnection connection = ldapConnectionManager.getConnection();
+        Dn dn = new Dn("CN="+displayName+"," + ouName + "," + adConfig.getBaseDn());
+        Entry entry = new DefaultEntry(
+                dn,
+                "objectClass: top",
+                "objectClass: person",
+                "objectClass: organizationalPerson",
+                "objectClass: user",
+                "sAMAccountName: " + userName,
+                "userPrincipalName: " + userName + "@" + adConfig.getBaseDn().replace("DC=", "").replace(",", "."),
+                "userPassword: " + password
+        );
+        //处理中文写入异常问题
+        entry.add("cn",displayName);
+        entry.add("displayName",displayName);
+        entry.add("givenName", displayName.substring(0, 1));
+        entry.add("sn", displayName.substring(1));
+        connection.add(entry);
+    }
+   /* public void deleteUser(String userName, String ouName) throws Exception {
+        try (LdapConnection connection = new LdapNetworkConnection(adConfig.getUrl())) {
+            connection.bind(adConfig.getAdminDn(), adConfig.getAdminPassword());
+
+            Dn dn = new Dn("CN=" + userName + ",OU=" + ouName + "," + adConfig.getBaseDn());
+            connection.delete(dn);
+        }
+    }
+    public void deleteOrganizationalUnit(String ouName) throws Exception {
+        try (LdapConnection connection = new LdapNetworkConnection(adConfig.getUrl())) {
+            connection.bind(adConfig.getAdminDn(), adConfig.getAdminPassword());
+
+            Dn dn = new Dn("OU=" + ouName + "," + adConfig.getBaseDn());
+            connection.delete(dn);
+        }
+    }*/
+   public void deleteUser(String userName, String ouName) throws Exception {
+       LdapConnection connection = ldapConnectionManager.getConnection();
+       Dn dn = new Dn("CN=测试,OU=人力资源部,OU=经营班子,OU=董事会,OU=User,DC=si,DC=ad");
+       connection.delete(dn);
+   }
+
+   public void syncOrg() throws IOException {
+       LdapConnection connection = ldapConnectionManager.getConnection();
+       List<HrOrg> orgList = orgService.getOrgList();
+       logger.info("同步组织数量:{}",orgList.size());
+       List<String> orgDns = getOrganizations(connection);
+       //判断组织是否存在
+       for (HrOrg org : orgList) {
+           if("已审核".equals(org.getOr_status())) {
+              if(!orgDns.isEmpty()){
+               Optional<String> optionalString =  orgDns.stream().filter(dn->dn.startsWith(getOUPath(org.getOr_path()))).findFirst();
+               if (optionalString.isPresent()) {
+                   String  orgDn = optionalString.get();
+                   System.out.println(orgDn);
+                   String  orgDescription = orgDn.substring(orgDn.indexOf(";")+1);
+                   if(!StringUtil.hasText(orgDescription)){
+
+                       updateOrgDescription(orgDn.split(";")[0], org.getOr_code());
+                   }
+                 }
+              }
+           }
+       }
+
+
+   }
+    /**
+     * 修改自定义description属性
+     * */
+    public void updateOrgDescription(String orgName, String newDescription) throws IOException {
+        LdapConnection connection = null;
+        try {
+            connection = ldapConnectionManager.getConnection();
+            Dn dn = new Dn( orgName);
+            Entry entry = new DefaultEntry(
+                    dn,
+                    "objectClass: top",
+                    "objectClass: organizationalUnit"
+            );
+            connection.modify(dn, new DefaultModification(ModificationOperation.REPLACE_ATTRIBUTE, "description", newDescription));
+        } catch (Exception e) {
+            logger.info("updateOrgDescription 更新组织描述失败:{}",e.getMessage());
+        }finally {
+            if (connection != null) {
+                connection.close();
+            }
+        }
+    }
+    /**
+     * 通过自定义description查看组织信息
+     * */
+    public List<String> findOrganizationsByDescription(String description) throws IOException {
+        LdapConnection connection = null;
+        try {
+            connection = ldapConnectionManager.getConnection();
+
+            // 设置LDAP搜索过滤器,匹配organizationalUnit且description包含搜索词
+            String filter = String.format("(&(objectClass=organizationalUnit)(description=*%s*))", description);
+            EntryCursor result = connection.search(
+                    adConfig.getBaseDn(),  // 从配置的基础DN开始搜索
+                    filter,
+                    SearchScope.SUBTREE,  // 搜索所有子节点
+                    "dn"  // 只返回DN属性
+            );
+
+            List<String> orgDns = new ArrayList<>();
+          System.out.println(result.iterator().hasNext());
+            return orgDns;
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        finally {
+            if (connection != null) {
+                connection.close();
+            }
+        }
+        return null;
+    }
+   private String getOUPath(String orpath){
+       String[] paths=orpath.split("-");
+       String ouPath="";
+       for(int i=paths.length-1;i>=0;i--){
+           ouPath+="OU="+paths[i]+",";
+       }
+       return ouPath.substring(0,ouPath.length()-1);
+   }
+
+    public List<String> getOrganizations(LdapConnection connection) throws  IOException {
+        if(connection==null || !connection.isConnected()){
+            connection = ldapConnectionManager.getConnection();
+        }
+        try {
+            // 搜索所有组织单元
+            List<String> orgDns = new ArrayList<>();
+            String filter = "(objectClass=organizationalUnit)";
+            EntryCursor result = connection.search(
+                    "OU=User,"+adConfig.getBaseDn(),  // AD基础DN,从配置文件获取
+                    filter,
+                    SearchScope.SUBTREE,  // 搜索所有子节点
+                    new String[] {"dn", "description"}
+            );
+            Entry entry = null;
+            while (result.next()) {
+                try {
+                    entry =result.get();
+                    System.out.println(entry.toString());
+                    orgDns.add(String.format("%s;%s", entry.getDn().toString(),
+                           StringUtil.hasText(entry.get("description"))?entry.get("description").toString():""));
+
+                } catch (CursorException e) {
+                   e.printStackTrace();
+                }
+            }
+            return orgDns;
+        } catch (LdapException e) {
+           e.printStackTrace();
+        } catch (CursorException e) {
+            throw new RuntimeException(e);
+        } finally {
+            if (connection != null) {
+                connection.close();
+            }
+        }
+
+        return null;
+    }
+
+
+}

+ 22 - 0
src/main/java/com/uas/eis/serviceImpl/OrgService.java

@@ -0,0 +1,22 @@
+package com.uas.eis.serviceImpl;
+
+import com.uas.eis.dao.BaseDao;
+import com.uas.eis.entity.HrOrg;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class OrgService {
+
+    @Autowired
+    private BaseDao baseDao;
+
+    public List<HrOrg> getOrgList() {
+       return  baseDao.query("select * from (select or_code,or_name,or_status,substr(sys_connect_by_path( or_name,'-'),instr(sys_connect_by_path( or_name,'-'),'-',1,2)+1) or_path,level as or_level " +
+                        "from hrorg where or_needsync=-1 start with or_PCODE is null connect by prior  or_CODE= or_PCODE) order by or_level asc"
+                ,
+                HrOrg.class);
+    }
+}

+ 24 - 0
src/main/java/com/uas/eis/serviceImpl/UASNetEasyService.java

@@ -0,0 +1,24 @@
+package com.uas.eis.serviceImpl;
+
+import com.uas.eis.sdk.NetEasySDK;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.stereotype.Service;
+
+@Service
+public class UASNetEasyService {
+    @Autowired
+    @Lazy
+    private NetEasySDK netEasySDK;
+
+    /*
+      同步人员资料
+      */
+    public void syncEmployee(){
+
+    }
+
+    /*
+      同步部门资料
+      */
+}

+ 0 - 56
src/main/resources/application-analyse.yml

@@ -1,56 +0,0 @@
-spring:
-    datasource:
-        type: com.alibaba.druid.pool.DruidDataSource
-        driverClassName: oracle.jdbc.OracleDriver
-        username: SZSI_P
-        password: select!#%*(
-        url: jdbc:oracle:thin:@172.16.0.22:1521:orcl
-        initialSize: 10
-        maxActive: 80
-        minIdle: 10
-        maxWait: 60000
-        testOnBorrow: true
-        testOnReturn: false
-        testWhileIdle: true
-        validationQuery: SELECT 1 FROM DUAL
-        timeBetweenEvictionRunsMillis: 60000
-        minEvictableIdleTimeMillis: 300000
-        poolPreparedStatements: true
-        maxPoolPreparedStatementPerConnectionSize: 80
-        filters: stat
-        removeAbandoned: true
-        removeAbandonedTimeout: 1800
-    http:
-        encoding:
-            force: true
-            charset: UTF-8
-            enabled: true
-    message:
-        encoding: UTF-8
-    jpa:
-      show-sql: false
-      hibernate:
-        ddl-auto: update
-      database: oracle
-
-server:
-    tomcat:
-        uri_encoding: UTF-8
-    port: 8009
-    context-path: /EIS
-action:
-    api_action: /EIS/api
-    public_actions: /EIS/logout,/EIS/hello1
-logging:
-  level:
-    org:
-      hibernate:
-        type: trace
-  config: classpath:log/logback-analyse.xml
-
-SECURITY_KEY: 435aMe9L5itTrckY35kfcOQvPkBGZtGo
-KEEP: 86400000
-Task:
-  Method: dataDeal
-  Cron: 5 0/10 1-23 * * ?
-

+ 0 - 54
src/main/resources/application-file.yml

@@ -1,54 +0,0 @@
-spring:
-    datasource:
-        type: com.alibaba.druid.pool.DruidDataSource
-        driverClassName: oracle.jdbc.OracleDriver
-        username: SZSI_P
-        password: select!#%*(
-        url: jdbc:oracle:thin:@172.16.0.22:1521:orcl
-        initialSize: 10
-        maxActive: 80
-        minIdle: 10
-        maxWait: 60000
-        testOnBorrow: true
-        testOnReturn: false
-        testWhileIdle: true
-        validationQuery: SELECT 1 FROM DUAL
-        timeBetweenEvictionRunsMillis: 60000
-        minEvictableIdleTimeMillis: 300000
-        poolPreparedStatements: true
-        maxPoolPreparedStatementPerConnectionSize: 80
-        filters: stat
-        removeAbandoned: true
-        removeAbandonedTimeout: 1800
-    http:
-        encoding:
-            force: true
-            charset: UTF-8
-            enabled: true
-    message:
-        encoding: UTF-8
-    jpa:
-      show-sql: false
-      hibernate:
-        ddl-auto: update
-      database: oracle
-
-server:
-    tomcat:
-        uri_encoding: UTF-8
-    port: 8008
-    context-path: /EIS
-action:
-    api_action: /EIS/api
-    public_actions: /EIS/logout,/EIS/hello1
-logging:
-  level:
-    org:
-      hibernate:
-        type: trace
-  config: classpath:log/logback-file.xml
-Task:
-    Method: edcBak
-    Cron: 0 0/10 1-23 * * ?
-
-

+ 14 - 4
src/main/resources/application.yml

@@ -6,7 +6,7 @@ spring:
         driverClassName: oracle.jdbc.OracleDriver
         username: SZSI_P
         password: select!#%*(
-        url: jdbc:oracle:thin:@172.16.0.22:1521:orcl
+        url: jdbc:oracle:thin:@10.1.81.208:11522:orcl
         initialSize: 10
         maxActive: 80
         minIdle: 10
@@ -49,7 +49,17 @@ logging:
       hibernate:
         type: trace
 
-SECURITY_KEY: 435aMe9L5itTrckY35kfcOQvPkBGZtGo
-KEEP: 86400000
-
+ad:
+  ldap:
+      url: 172.16.0.5
+      port: 389
+      baseDn: DC=si,DC=ad
+      username: liuch@si.ad
+      password: diskdiskdisk
+neteasy:
+    appId: qy202507181633199D83
+    authCode: ZJftKH7y
+    cropId: a8533991d99cb2b9
+    domain: sisemi.com.cn
+    serverUrl: https://api.qiye.163.com
 

+ 62 - 44
src/test/java/com/uas/eis/UasEisApplicationTests.java

@@ -2,48 +2,34 @@ package com.uas.eis;
 
 
 import com.uas.eis.dao.BaseDao;
-import com.uas.eis.entity.EquipConfig;
-import com.uas.eis.service.DataDealService;
-import com.uas.eis.service.EDCBakService;
-import com.uas.eis.utils.CollectionUtil;
-import com.uas.eis.utils.SmbUtil;
-import com.uas.eis.utils.SmbUtilSmb1;
-import jcifs.CIFSContext;
-import jcifs.CIFSException;
-import jcifs.config.PropertyConfiguration;
-import jcifs.context.BaseContext;
-import jcifs.smb.SmbException;
-import jcifs.smb.SmbFile;
+import com.uas.eis.entity.HrOrg;
+import com.uas.eis.serviceImpl.ADSyncService;
+import com.uas.eis.serviceImpl.OrgService;
+import org.apache.directory.api.ldap.model.exception.LdapException;
+import org.apache.directory.api.util.Strings;
+import org.apache.directory.ldap.client.api.LdapConnection;
+import org.apache.directory.ldap.client.api.LdapNetworkConnection;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.jdbc.core.BeanPropertyRowMapper;
 import org.springframework.test.context.junit4.SpringRunner;
 
-import java.io.IOException;
-import java.net.MalformedURLException;
-import java.util.Date;
+import java.io.UnsupportedEncodingException;
 import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.concurrent.CountDownLatch;
 
 @RunWith(SpringRunner.class)
 @SpringBootTest(classes = {UasEisApplication.class})
 public class UasEisApplicationTests {
 	private final Logger logger = LoggerFactory.getLogger(this.getClass());
 
-
 	@Autowired
-	private DataDealService dataDealService;
+	private ADSyncService adSyncService;
 	@Autowired
-	private EDCBakService edcBakService;
+	private OrgService orgService;
 
-	@Autowired
-	private BaseDao baseDao;
 	//@Test
 /*	public void contextLoads() {
 		Date date = new Date();
@@ -161,27 +147,59 @@ public class UasEisApplicationTests {
 
 	}*/
 	@Test
-	public void EDCBak(){
-		logger.info("文件归档开始");
-		Date date = new Date();
-		//baseDao.callProcedure("DATACENTER_SYNC",new Object[]{""});
-		//所有设备
-		List<EquipConfig> EquipConfigs = baseDao.getJdbcTemplate().query("select ec_ip,ec_counterpath,ec_datapath,ec_counterbak,ec_databak,ed_devcode,ed_teststep from EQUIPCONFIGDETAIL LEFT JOIN EQUIPCONFIG ON ED_ECID=EC_ID where ec_databak is not null and ec_ip='172.16.3.32' order by ec_ip",
-				new BeanPropertyRowMapper<EquipConfig>(EquipConfig.class));
-		Map<String,List<EquipConfig>> ecMap = CollectionUtil.groupBy(EquipConfigs,EquipConfig::getEc_ip);
-		final CountDownLatch countDownLatch = new CountDownLatch(EquipConfigs.size());
-		try {
-			for(String key : ecMap.keySet()){
-				edcBakService.EDCBak(ecMap.get(key),countDownLatch);
-			}
-			countDownLatch.await();
-		}catch (Exception e){
+	public void test5(){
+        try {
+            //adService.testConnection();
+			LdapConnection connection = new LdapNetworkConnection("ldap://10.1.1.1:389");
+			connection.bind("cn=scan,dc=yitoa,dc=com", "abc.123");
+			System.out.println("连接成功");
+			connection.close();
+			System.out.println("success");
+        } catch (Exception e) {
 			e.printStackTrace();
-		}
-		logger.info("文件归档结束:用时"+((new Date().getTime()-date.getTime())/1000));
+            throw new RuntimeException(e);
+        }
+    }
+
+	@Test
+	public void addUser() throws LdapException, UnsupportedEncodingException {
+		String displayName = "测试";
+		System.out.println(displayName.substring(1));
+		System.out.println(displayName.substring(0, 1));
+		System.out.println(Strings.utf8ToString(displayName.getBytes("UTF-8")));
+		adSyncService.addUser("abcd", displayName, "OU=人力资源部,OU=经营班子,OU=董事会,OU=User", "password123");
+	}
+
+	@Test
+	public void deleteuser() throws Exception {
+	  adSyncService.deleteUser("abc", "OU=人力资源部,OU=经营班子,OU=董事会,OU=User");
+	}
+	@Test
+	public void addOrg() throws Exception {
+		adSyncService.addOrg("测试2部;OU=人力资源部;OU=经营班子;OU=董事会;OU=User",null);
+	}
+
+	@Test
+	public void modifyOrgDesc() throws Exception {
+		adSyncService.updateOrgDescription("测试2部;OU=人力资源部;OU=经营班子;OU=董事会;OU=User","A001");
+	}
+	@Test
+	public void findOrg() throws Exception {
+
+		//adSyncService.findOrganizationsByDescription("A001");
+//		List<HrOrg> orgList = orgService.getOrgList();
+//		System.out.println(orgList.get(0).getOr_code());
+		adSyncService.getOrganizations(null);
+	}
+	@Test
+	public void SyncOrg() throws Exception {
+
+		//adSyncService.findOrganizationsByDescription("A001");
+//		List<HrOrg> orgList = orgService.getOrgList();
+//		System.out.println(orgList.get(0).getOr_code());
+		//String str ="a;";
+		//System.out.println(str.substring(str.indexOf(";")+1));
+		adSyncService.syncOrg();
 	}
-   //@Test
-	public void test123(){
 
-  }
 }