This commit is contained in:
MaxKey 2023-10-14 20:02:05 +08:00
commit 9c262146a4
4 changed files with 412 additions and 363 deletions

View File

@ -17,16 +17,11 @@
package org.dromara.maxkey.synchronizer.jdbc; package org.dromara.maxkey.synchronizer.jdbc;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import org.apache.commons.beanutils.PropertyUtils; import org.apache.commons.beanutils.PropertyUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.dromara.maxkey.constants.ConstsStatus; import org.dromara.maxkey.constants.ConstsStatus;
import org.dromara.maxkey.entity.DbTableMetaData; import org.dromara.maxkey.entity.DbTableMetaData;
import org.dromara.maxkey.entity.HistorySynchronizer;
import org.dromara.maxkey.entity.Organizations; import org.dromara.maxkey.entity.Organizations;
import org.dromara.maxkey.synchronizer.AbstractSynchronizerService; import org.dromara.maxkey.synchronizer.AbstractSynchronizerService;
import org.dromara.maxkey.synchronizer.ISynchronizerService; import org.dromara.maxkey.synchronizer.ISynchronizerService;
@ -35,18 +30,25 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@Service import java.sql.Connection;
public class JdbcOrganizationService extends AbstractSynchronizerService implements ISynchronizerService{ import java.sql.ResultSet;
final static Logger _logger = LoggerFactory.getLogger(JdbcOrganizationService.class); import java.sql.SQLException;
static ArrayList< ColumnFieldMapper> mapperList = new ArrayList< ColumnFieldMapper>(); import java.sql.Statement;
import java.util.ArrayList;
@Service
public class JdbcOrganizationService extends AbstractSynchronizerService implements ISynchronizerService {
final static Logger _logger = LoggerFactory.getLogger(JdbcOrganizationService.class);
static ArrayList<ColumnFieldMapper> mapperList = new ArrayList<>();
@Override
public void sync() { public void sync() {
Connection conn = null; Connection conn = null;
Statement stmt = null; Statement stmt = null;
ResultSet rs = null; ResultSet rs = null;
try { try {
if(StringUtils.isNotBlank(synchronizer.getOrgFilters())){ if (StringUtils.isNotBlank(synchronizer.getOrgFilters())) {
_logger.info("Sync Org Filters {}",synchronizer.getOrgFilters()); _logger.info("Sync Org Filters {}", synchronizer.getOrgFilters());
conn = JdbcUtils.connect( conn = JdbcUtils.connect(
synchronizer.getProviderUrl(), synchronizer.getProviderUrl(),
synchronizer.getPrincipal(), synchronizer.getPrincipal(),
@ -55,19 +57,19 @@ public class JdbcOrganizationService extends AbstractSynchronizerService imple
stmt = conn.createStatement(); stmt = conn.createStatement();
rs = stmt.executeQuery(synchronizer.getOrgFilters()); rs = stmt.executeQuery(synchronizer.getOrgFilters());
while(rs.next()) { while (rs.next()) {
Organizations org = buildOrganization(rs); Organizations org = buildOrganization(rs);
Organizations queryOrg = this.organizationsService.get(org.getId()); Organizations queryOrg = organizationsService.get(org.getId());
if(queryOrg == null) { if (queryOrg == null) {
organizationsService.insert(org); organizationsService.insert(org);
}else{ } else {
this.organizationsService.update(org); organizationsService.update(org);
} }
} }
} }
} catch (Exception e) { } catch (Exception e) {
_logger.error("Exception " , e); _logger.error("Exception ", e);
}finally { } finally {
JdbcUtils.release(conn, stmt, rs); JdbcUtils.release(conn, stmt, rs);
} }
} }
@ -77,65 +79,77 @@ public class JdbcOrganizationService extends AbstractSynchronizerService imple
DbTableMetaData meta = JdbcUtils.getMetaData(rs); DbTableMetaData meta = JdbcUtils.getMetaData(rs);
Organizations org = new Organizations(); Organizations org = new Organizations();
for (ColumnFieldMapper mapper :mapperList ) { for (ColumnFieldMapper mapper : mapperList) {
if(meta.getColumnsMap().containsKey(mapper.getColumn())) { if (meta.getColumnsMap().containsKey(mapper.getColumn())) {
Object value = null; Object value = null;
if(mapper.getType().equalsIgnoreCase("String")) { if (mapper.getType().equalsIgnoreCase("String")) {
value = rs.getString(mapper.getColumn()); value = rs.getString(mapper.getColumn());
}else { } else {
value = rs.getInt(mapper.getColumn()); value = rs.getInt(mapper.getColumn());
} }
if(value != null ) { if (value != null) {
try { try {
PropertyUtils.setSimpleProperty(org, mapper.getField(), value); PropertyUtils.setSimpleProperty(org, mapper.getField(), value);
} catch (Exception e) { } catch (Exception e) {
_logger.error("setSimpleProperty {}" , e); _logger.error("setSimpleProperty {}", e);
} }
} }
} }
} }
org.setId(org.generateId()); org.setId(org.generateId());
org.setInstId(this.synchronizer.getInstId()); org.setInstId(synchronizer.getInstId());
if(meta.getColumnsMap().containsKey("status")) { if (meta.getColumnsMap().containsKey("status")) {
org.setStatus(rs.getInt("status")); org.setStatus(rs.getInt("status"));
}else { } else {
org.setStatus(ConstsStatus.ACTIVE); org.setStatus(ConstsStatus.ACTIVE);
} }
_logger.debug("Organization {}", org);
HistorySynchronizer historySynchronizer = new HistorySynchronizer();
historySynchronizer.setId(historySynchronizer.generateId());
historySynchronizer.setSyncId(synchronizer.getId());
historySynchronizer.setSyncName(synchronizer.getName());
historySynchronizer.setObjectId(org.getId());
historySynchronizer.setObjectName(org.getOrgName());
historySynchronizer.setObjectType(Organizations.class.getSimpleName());
historySynchronizer.setInstId(synchronizer.getInstId());
historySynchronizer.setResult("success");
historySynchronizerService.insert(historySynchronizer);
_logger.debug("Organization {}" , org);
return org; return org;
} }
static { static {
mapperList.add(new ColumnFieldMapper("id" , "id","String")); mapperList.add(new ColumnFieldMapper("id", "id", "String"));
mapperList.add(new ColumnFieldMapper("orgcode" , "orgCode","String")); mapperList.add(new ColumnFieldMapper("orgcode", "orgCode", "String"));
mapperList.add(new ColumnFieldMapper("orgname" , "orgName","String")); mapperList.add(new ColumnFieldMapper("orgname", "orgName", "String"));
mapperList.add(new ColumnFieldMapper("fullname" , "fullName","String")); mapperList.add(new ColumnFieldMapper("fullname", "fullName", "String"));
mapperList.add(new ColumnFieldMapper("parentid" , "parentId","String")); mapperList.add(new ColumnFieldMapper("parentid", "parentId", "String"));
mapperList.add(new ColumnFieldMapper("parentcode" , "parentCode","String")); mapperList.add(new ColumnFieldMapper("parentcode", "parentCode", "String"));
mapperList.add(new ColumnFieldMapper("parentname" , "parentName","String")); mapperList.add(new ColumnFieldMapper("parentname", "parentName", "String"));
mapperList.add(new ColumnFieldMapper("type" , "type","String")); mapperList.add(new ColumnFieldMapper("type", "type", "String"));
mapperList.add(new ColumnFieldMapper("codepath" , "codePath","String")); mapperList.add(new ColumnFieldMapper("codepath", "codePath", "String"));
mapperList.add(new ColumnFieldMapper("namepath" , "namePath","String")); mapperList.add(new ColumnFieldMapper("namepath", "namePath", "String"));
mapperList.add(new ColumnFieldMapper("level" , "level","Int")); mapperList.add(new ColumnFieldMapper("level", "level", "Int"));
mapperList.add(new ColumnFieldMapper("haschild" , "hasChild","String")); mapperList.add(new ColumnFieldMapper("haschild", "hasChild", "String"));
mapperList.add(new ColumnFieldMapper("division" , "division","String")); mapperList.add(new ColumnFieldMapper("division", "division", "String"));
mapperList.add(new ColumnFieldMapper("country" , "country","String")); mapperList.add(new ColumnFieldMapper("country", "country", "String"));
mapperList.add(new ColumnFieldMapper("region" , "region","String")); mapperList.add(new ColumnFieldMapper("region", "region", "String"));
mapperList.add(new ColumnFieldMapper("locality" , "locality","String")); mapperList.add(new ColumnFieldMapper("locality", "locality", "String"));
mapperList.add(new ColumnFieldMapper("street" , "street","String")); mapperList.add(new ColumnFieldMapper("street", "street", "String"));
mapperList.add(new ColumnFieldMapper("address" , "address","String")); mapperList.add(new ColumnFieldMapper("address", "address", "String"));
mapperList.add(new ColumnFieldMapper("contact" , "contact","String")); mapperList.add(new ColumnFieldMapper("contact", "contact", "String"));
mapperList.add(new ColumnFieldMapper("postalcode" , "postalCode","String")); mapperList.add(new ColumnFieldMapper("postalcode", "postalCode", "String"));
mapperList.add(new ColumnFieldMapper("phone" , "phone","String")); mapperList.add(new ColumnFieldMapper("phone", "phone", "String"));
mapperList.add(new ColumnFieldMapper("fax" , "fax","String")); mapperList.add(new ColumnFieldMapper("fax", "fax", "String"));
mapperList.add(new ColumnFieldMapper("email" , "email","String")); mapperList.add(new ColumnFieldMapper("email", "email", "String"));
mapperList.add(new ColumnFieldMapper("sortindex" , "sortIndex","Int")); mapperList.add(new ColumnFieldMapper("sortindex", "sortIndex", "Int"));
mapperList.add(new ColumnFieldMapper("ldapdn" , "ldapDn","String")); mapperList.add(new ColumnFieldMapper("ldapdn", "ldapDn", "String"));
mapperList.add(new ColumnFieldMapper("description" , "description","String")); mapperList.add(new ColumnFieldMapper("description", "description", "String"));
mapperList.add(new ColumnFieldMapper("status" , "status","int")); mapperList.add(new ColumnFieldMapper("status", "status", "int"));
} }
} }

View File

@ -17,15 +17,10 @@
package org.dromara.maxkey.synchronizer.jdbc; package org.dromara.maxkey.synchronizer.jdbc;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import org.apache.commons.beanutils.PropertyUtils; import org.apache.commons.beanutils.PropertyUtils;
import org.dromara.maxkey.constants.ConstsStatus; import org.dromara.maxkey.constants.ConstsStatus;
import org.dromara.maxkey.entity.DbTableMetaData; import org.dromara.maxkey.entity.DbTableMetaData;
import org.dromara.maxkey.entity.HistorySynchronizer;
import org.dromara.maxkey.entity.UserInfo; import org.dromara.maxkey.entity.UserInfo;
import org.dromara.maxkey.synchronizer.AbstractSynchronizerService; import org.dromara.maxkey.synchronizer.AbstractSynchronizerService;
import org.dromara.maxkey.synchronizer.ISynchronizerService; import org.dromara.maxkey.synchronizer.ISynchronizerService;
@ -35,12 +30,19 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
@Service @Service
public class JdbcUsersService extends AbstractSynchronizerService implements ISynchronizerService{ public class JdbcUsersService extends AbstractSynchronizerService implements ISynchronizerService {
final static Logger _logger = LoggerFactory.getLogger(JdbcUsersService.class); final static Logger _logger = LoggerFactory.getLogger(JdbcUsersService.class);
static ArrayList< ColumnFieldMapper> mapperList = new ArrayList< ColumnFieldMapper>(); static ArrayList<ColumnFieldMapper> mapperList = new ArrayList<>();
@Override
public void sync() { public void sync() {
_logger.info("Sync Jdbc Users..."); _logger.info("Sync Jdbc Users...");
Connection conn = null; Connection conn = null;
@ -48,8 +50,8 @@ public class JdbcUsersService extends AbstractSynchronizerService implements
ResultSet rs = null; ResultSet rs = null;
try { try {
if(StringUtils.isNotBlank(synchronizer.getOrgFilters())){ if (StringUtils.isNotBlank(synchronizer.getUserFilters())) {
_logger.info("Sync User Filters {}",synchronizer.getOrgFilters()); _logger.info("Sync User Filters {}", synchronizer.getUserFilters());
conn = JdbcUtils.connect( conn = JdbcUtils.connect(
synchronizer.getProviderUrl(), synchronizer.getProviderUrl(),
synchronizer.getPrincipal(), synchronizer.getPrincipal(),
@ -61,32 +63,32 @@ public class JdbcUsersService extends AbstractSynchronizerService implements
long insertCount = 0; long insertCount = 0;
long updateCount = 0; long updateCount = 0;
long readCount = 0; long readCount = 0;
while(rs.next()) { while (rs.next()) {
UserInfo user = buildUserInfo(rs); UserInfo user = buildUserInfo(rs);
UserInfo queryUser = this.userInfoService.findByUsername(user.getUsername()); UserInfo queryUser = userInfoService.findByUsername(user.getUsername());
readCount ++; readCount++;
if(queryUser == null) { if (queryUser == null) {
if(user.getPassword().indexOf("{") > -1 && user.getPassword().indexOf("}") > -1) { if (user.getPassword().indexOf("{") > -1 && user.getPassword().indexOf("}") > -1) {
userInfoService.insert(user,false); userInfoService.insert(user, false);
}else { } else {
//passwordEncoder //passwordEncoder
userInfoService.insert(user,true); userInfoService.insert(user, true);
} }
user.setBadPasswordCount(1); user.setBadPasswordCount(1);
insertCount++; insertCount++;
}else{ } else {
//no need update password , set null //no need update password , set null
user.setPassword(null); user.setPassword(null);
userInfoService.update(user); userInfoService.update(user);
updateCount++; updateCount++;
} }
_logger.trace("read Count {} , insert Count {} , updateCount {} " , readCount,insertCount,updateCount); _logger.trace("read Count {} , insert Count {} , updateCount {} ", readCount, insertCount, updateCount);
} }
_logger.info("read Count {} , insert Count {} , updateCount {} " , readCount,insertCount,updateCount); _logger.info("read Count {} , insert Count {} , updateCount {} ", readCount, insertCount, updateCount);
} }
} catch (Exception e) { } catch (Exception e) {
_logger.error("Exception " , e); _logger.error("Exception ", e);
}finally { } finally {
JdbcUtils.release(conn, stmt, rs); JdbcUtils.release(conn, stmt, rs);
} }
} }
@ -95,110 +97,121 @@ public class JdbcUsersService extends AbstractSynchronizerService implements
DbTableMetaData meta = JdbcUtils.getMetaData(rs); DbTableMetaData meta = JdbcUtils.getMetaData(rs);
UserInfo user = new UserInfo(); UserInfo user = new UserInfo();
//basic //basic
for (ColumnFieldMapper mapper :mapperList ) { for (ColumnFieldMapper mapper : mapperList) {
if(meta.getColumnsMap().containsKey(mapper.getColumn())) { if (meta.getColumnsMap().containsKey(mapper.getColumn())) {
Object value = null; Object value = null;
if(mapper.getType().equalsIgnoreCase("String")) { if (mapper.getType().equalsIgnoreCase("String")) {
value = rs.getString(mapper.getColumn()); value = rs.getString(mapper.getColumn());
}else { } else {
value = rs.getInt(mapper.getColumn()); value = rs.getInt(mapper.getColumn());
} }
if(value != null ) { if (value != null) {
try { try {
PropertyUtils.setSimpleProperty(user, mapper.getField(), value); PropertyUtils.setSimpleProperty(user, mapper.getField(), value);
} catch (Exception e) { } catch (Exception e) {
_logger.error("setSimpleProperty {}" , e); _logger.error("setSimpleProperty {}", e);
} }
} }
} }
} }
if(meta.getColumnsMap().containsKey("status")) { if (meta.getColumnsMap().containsKey("status")) {
user.setStatus(rs.getInt("status")); user.setStatus(rs.getInt("status"));
}else { } else {
user.setStatus(ConstsStatus.ACTIVE); user.setStatus(ConstsStatus.ACTIVE);
} }
user.setInstId(this.synchronizer.getInstId()); user.setInstId(synchronizer.getInstId());
//password //password
if(meta.getColumnsMap().containsKey("password")) { if (meta.getColumnsMap().containsKey("password")) {
user.setPassword(rs.getString("password")); user.setPassword(rs.getString("password"));
}else { } else {
//后4位 //后4位
String last4Char = "6666"; String last4Char = "6666";
if(StringUtils.isNotBlank(user.getIdCardNo())) { if (StringUtils.isNotBlank(user.getIdCardNo())) {
last4Char = user.getIdCardNo().substring(user.getIdCardNo().length() - 4); last4Char = user.getIdCardNo().substring(user.getIdCardNo().length() - 4);
}else if(StringUtils.isNotBlank(user.getMobile())) { } else if (StringUtils.isNotBlank(user.getMobile())) {
last4Char = user.getMobile().substring(user.getMobile().length() - 4); last4Char = user.getMobile().substring(user.getMobile().length() - 4);
}else if(StringUtils.isNotBlank(user.getEmployeeNumber())) { } else if (StringUtils.isNotBlank(user.getEmployeeNumber())) {
last4Char = user.getEmployeeNumber().substring(user.getEmployeeNumber().length() - 4); last4Char = user.getEmployeeNumber().substring(user.getEmployeeNumber().length() - 4);
} }
user.setPassword(user.getUsername()+"@M"+last4Char); user.setPassword(user.getUsername() + "@M" + last4Char);
} }
_logger.debug("User {} " , user); HistorySynchronizer historySynchronizer = new HistorySynchronizer();
historySynchronizer.setId(historySynchronizer.generateId());
historySynchronizer.setSyncId(synchronizer.getId());
historySynchronizer.setSyncName(synchronizer.getName());
historySynchronizer.setObjectId(user.getId());
historySynchronizer.setObjectName(user.getUsername());
historySynchronizer.setObjectType(UserInfo.class.getSimpleName());
historySynchronizer.setInstId(synchronizer.getInstId());
historySynchronizer.setResult("success");
historySynchronizerService.insert(historySynchronizer);
_logger.debug("User {} ", user);
return user; return user;
} }
static { static {
mapperList.add(new ColumnFieldMapper("id" , "id","String")); mapperList.add(new ColumnFieldMapper("id", "id", "String"));
mapperList.add(new ColumnFieldMapper("username" , "userName","String")); mapperList.add(new ColumnFieldMapper("username", "username", "String"));
mapperList.add(new ColumnFieldMapper("picture" , "picture","String")); mapperList.add(new ColumnFieldMapper("picture", "picture", "String"));
mapperList.add(new ColumnFieldMapper("displayname" , "displayName","String")); mapperList.add(new ColumnFieldMapper("displayname", "displayName", "String"));
mapperList.add(new ColumnFieldMapper("nickname" , "nickName","String")); mapperList.add(new ColumnFieldMapper("nickname", "nickName", "String"));
mapperList.add(new ColumnFieldMapper("mobile" , "mobile","String")); mapperList.add(new ColumnFieldMapper("mobile", "mobile", "String"));
mapperList.add(new ColumnFieldMapper("email" , "email","String")); mapperList.add(new ColumnFieldMapper("email", "email", "String"));
mapperList.add(new ColumnFieldMapper("birthdate" , "birthDate","String")); mapperList.add(new ColumnFieldMapper("birthdate", "birthDate", "String"));
mapperList.add(new ColumnFieldMapper("usertype" , "userType","String")); mapperList.add(new ColumnFieldMapper("usertype", "userType", "String"));
mapperList.add(new ColumnFieldMapper("userstate" , "userState","String")); mapperList.add(new ColumnFieldMapper("userstate", "userState", "String"));
mapperList.add(new ColumnFieldMapper("windowsaccount" , "windowsAccount","String")); mapperList.add(new ColumnFieldMapper("windowsaccount", "windowsAccount", "String"));
mapperList.add(new ColumnFieldMapper("givenname" , "givenName","String")); mapperList.add(new ColumnFieldMapper("givenname", "givenName", "String"));
mapperList.add(new ColumnFieldMapper("middlename" , "middleName","String")); mapperList.add(new ColumnFieldMapper("middlename", "middleName", "String"));
mapperList.add(new ColumnFieldMapper("married" , "married","Int")); mapperList.add(new ColumnFieldMapper("married", "married", "Int"));
mapperList.add(new ColumnFieldMapper("gender" , "gender","Int")); mapperList.add(new ColumnFieldMapper("gender", "gender", "Int"));
mapperList.add(new ColumnFieldMapper("idtype" , "idType","Int")); mapperList.add(new ColumnFieldMapper("idtype", "idType", "Int"));
mapperList.add(new ColumnFieldMapper("idcardno" , "idCardNo","String")); mapperList.add(new ColumnFieldMapper("idcardno", "idCardNo", "String"));
mapperList.add(new ColumnFieldMapper("website" , "webSite","String")); mapperList.add(new ColumnFieldMapper("website", "webSite", "String"));
mapperList.add(new ColumnFieldMapper("startworkdate" , "startWorkDate","String")); mapperList.add(new ColumnFieldMapper("startworkdate", "startWorkDate", "String"));
//work //work
mapperList.add(new ColumnFieldMapper("workcountry" , "workCountry","String")); mapperList.add(new ColumnFieldMapper("workcountry", "workCountry", "String"));
mapperList.add(new ColumnFieldMapper("workregion" , "workRegion","String")); mapperList.add(new ColumnFieldMapper("workregion", "workRegion", "String"));
mapperList.add(new ColumnFieldMapper("worklocality" , "workLocality","String")); mapperList.add(new ColumnFieldMapper("worklocality", "workLocality", "String"));
mapperList.add(new ColumnFieldMapper("workstreetaddress" , "workStreetAddress","String")); mapperList.add(new ColumnFieldMapper("workstreetaddress", "workStreetAddress", "String"));
mapperList.add(new ColumnFieldMapper("workaddressformatted" , "workAddressFormatted","String")); mapperList.add(new ColumnFieldMapper("workaddressformatted", "workAddressFormatted", "String"));
mapperList.add(new ColumnFieldMapper("workemail" , "workEmail","String")); mapperList.add(new ColumnFieldMapper("workemail", "workEmail", "String"));
mapperList.add(new ColumnFieldMapper("workphonenumber" , "workPhoneNumber","String")); mapperList.add(new ColumnFieldMapper("workphonenumber", "workPhoneNumber", "String"));
mapperList.add(new ColumnFieldMapper("workpostalcode" , "workPostalCode","String")); mapperList.add(new ColumnFieldMapper("workpostalcode", "workPostalCode", "String"));
mapperList.add(new ColumnFieldMapper("workfax" , "workFax","String")); mapperList.add(new ColumnFieldMapper("workfax", "workFax", "String"));
mapperList.add(new ColumnFieldMapper("workofficename" , "workOfficeName","String")); mapperList.add(new ColumnFieldMapper("workofficename", "workOfficeName", "String"));
//home //home
mapperList.add(new ColumnFieldMapper("homecountry" , "homeCountry","String")); mapperList.add(new ColumnFieldMapper("homecountry", "homeCountry", "String"));
mapperList.add(new ColumnFieldMapper("homeregion" , "homeRegion","String")); mapperList.add(new ColumnFieldMapper("homeregion", "homeRegion", "String"));
mapperList.add(new ColumnFieldMapper("homelocality" , "homeLocality","String")); mapperList.add(new ColumnFieldMapper("homelocality", "homeLocality", "String"));
mapperList.add(new ColumnFieldMapper("homestreetaddress" , "homeStreetAddress","String")); mapperList.add(new ColumnFieldMapper("homestreetaddress", "homeStreetAddress", "String"));
mapperList.add(new ColumnFieldMapper("homeaddressformatted" , "homeAddressFormatted","String")); mapperList.add(new ColumnFieldMapper("homeaddressformatted", "homeAddressFormatted", "String"));
mapperList.add(new ColumnFieldMapper("homeemail" , "homeEmail","String")); mapperList.add(new ColumnFieldMapper("homeemail", "homeEmail", "String"));
mapperList.add(new ColumnFieldMapper("homephonenumber" , "homePhonenumber","String")); mapperList.add(new ColumnFieldMapper("homephonenumber", "homePhonenumber", "String"));
mapperList.add(new ColumnFieldMapper("homepostalcode" , "homePostalCode","String")); mapperList.add(new ColumnFieldMapper("homepostalcode", "homePostalCode", "String"));
mapperList.add(new ColumnFieldMapper("homefax" , "homeFax","String")); mapperList.add(new ColumnFieldMapper("homefax", "homeFax", "String"));
//company //company
mapperList.add(new ColumnFieldMapper("employeenumber" , "employeeNumber","String")); mapperList.add(new ColumnFieldMapper("employeenumber", "employeeNumber", "String"));
mapperList.add(new ColumnFieldMapper("costcenter" , "costCenter","String")); mapperList.add(new ColumnFieldMapper("costcenter", "costCenter", "String"));
mapperList.add(new ColumnFieldMapper("organization" , "organization","String")); mapperList.add(new ColumnFieldMapper("organization", "organization", "String"));
mapperList.add(new ColumnFieldMapper("division" , "division","String")); mapperList.add(new ColumnFieldMapper("division", "division", "String"));
mapperList.add(new ColumnFieldMapper("departmentid" , "departmentId","String")); mapperList.add(new ColumnFieldMapper("departmentid", "departmentId", "String"));
mapperList.add(new ColumnFieldMapper("department" , "department","String")); mapperList.add(new ColumnFieldMapper("department", "department", "String"));
mapperList.add(new ColumnFieldMapper("jobtitle" , "jobTitle","String")); mapperList.add(new ColumnFieldMapper("jobtitle", "jobTitle", "String"));
mapperList.add(new ColumnFieldMapper("joblevel" , "jobLevel","String")); mapperList.add(new ColumnFieldMapper("joblevel", "jobLevel", "String"));
mapperList.add(new ColumnFieldMapper("managerid" , "managerId","String")); mapperList.add(new ColumnFieldMapper("managerid", "managerId", "String"));
mapperList.add(new ColumnFieldMapper("manager" , "manager","String")); mapperList.add(new ColumnFieldMapper("manager", "manager", "String"));
mapperList.add(new ColumnFieldMapper("assistantid" , "assistantId","String")); mapperList.add(new ColumnFieldMapper("assistantid", "assistantId", "String"));
mapperList.add(new ColumnFieldMapper("assistant" , "assistant","String")); mapperList.add(new ColumnFieldMapper("assistant", "assistant", "String"));
mapperList.add(new ColumnFieldMapper("entrydate" , "entrydate","String")); mapperList.add(new ColumnFieldMapper("entrydate", "entrydate", "String"));
mapperList.add(new ColumnFieldMapper("quitdate" , "quitdate","String")); mapperList.add(new ColumnFieldMapper("quitdate", "quitdate", "String"));
mapperList.add(new ColumnFieldMapper("ldapdn" , "ldapDn","String")); mapperList.add(new ColumnFieldMapper("ldapdn", "ldapDn", "String"));
mapperList.add(new ColumnFieldMapper("description" , "description","String")); mapperList.add(new ColumnFieldMapper("description", "description", "String"));
mapperList.add(new ColumnFieldMapper("status" , "status","String")); mapperList.add(new ColumnFieldMapper("status", "status", "String"));
} }
} }

View File

@ -2,10 +2,10 @@
<div> <div>
<form nz-form [formGroup]="formGroup" (ngSubmit)="onSubmit($event)" se-container="1"> <form nz-form [formGroup]="formGroup" (ngSubmit)="onSubmit($event)" se-container="1">
<nz-form-item> <nz-form-item>
<nz-form-label [nzMd]="6" nzFor="id">{{ 'mxk.text.id' | i18n }}</nz-form-label> <nz-form-label [nzMd]="6" nzFor="name">{{ 'mxk.synchronizers.name' | i18n }}</nz-form-label>
<nz-form-control [nzMd]="18" nzErrorTip="The input is not valid id!"> <nz-form-control [nzMd]="18" nzErrorTip="The input is not valid id!">
<input [(ngModel)]="form.model.id" disabled="{{ isEdit }}" [ngModelOptions]="{ standalone: true }" nz-input <input [(ngModel)]="form.model.name" [ngModelOptions]="{ standalone: true }" nz-input
name="id" id="id" /> name="name" id="name" />
</nz-form-control> </nz-form-control>
</nz-form-item> </nz-form-item>
<nz-form-item> <nz-form-item>

View File

@ -17,10 +17,9 @@
package org.dromara.maxkey.web.config.contorller; package org.dromara.maxkey.web.config.contorller;
import java.util.List;
import org.dromara.maxkey.authn.annotation.CurrentUser; import org.dromara.maxkey.authn.annotation.CurrentUser;
import org.dromara.maxkey.crypto.password.PasswordReciprocal; import org.dromara.maxkey.crypto.password.PasswordReciprocal;
import org.dromara.maxkey.entity.Connectors;
import org.dromara.maxkey.entity.Message; import org.dromara.maxkey.entity.Message;
import org.dromara.maxkey.entity.Synchronizers; import org.dromara.maxkey.entity.Synchronizers;
import org.dromara.maxkey.entity.UserInfo; import org.dromara.maxkey.entity.UserInfo;
@ -28,47 +27,59 @@ import org.dromara.maxkey.persistence.service.SynchronizersService;
import org.dromara.maxkey.synchronizer.ISynchronizerService; import org.dromara.maxkey.synchronizer.ISynchronizerService;
import org.dromara.maxkey.util.StringUtils; import org.dromara.maxkey.util.StringUtils;
import org.dromara.maxkey.web.WebContext; import org.dromara.maxkey.web.WebContext;
import org.dromara.mybatis.jpa.entity.JpaPageResults;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import java.util.List;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller @Controller
@RequestMapping(value={"/config/synchronizers"}) @RequestMapping(value = {"/config/synchronizers"})
public class SynchronizersController { public class SynchronizersController {
static final Logger logger = LoggerFactory.getLogger(SynchronizersController.class); static final Logger logger = LoggerFactory.getLogger(SynchronizersController.class);
@Autowired @Autowired
SynchronizersService synchronizersService; SynchronizersService synchronizersService;
@RequestMapping(value = { "/fetch" }, produces = {MediaType.APPLICATION_JSON_VALUE}) @RequestMapping(value = {"/fetch"}, produces = {MediaType.APPLICATION_JSON_VALUE})
@ResponseBody @ResponseBody
public ResponseEntity<?> fetch(Synchronizers synchronizers,@CurrentUser UserInfo currentUser) { public ResponseEntity<?> fetch(Synchronizers synchronizers, @CurrentUser UserInfo currentUser) {
logger.debug("fetch {}" , synchronizers); logger.debug("fetch {}", synchronizers);
synchronizers.setInstId(currentUser.getInstId()); synchronizers.setInstId(currentUser.getInstId());
return new Message<JpaPageResults<Synchronizers>>( return new Message<>(
synchronizersService.fetchPageResults(synchronizers)).buildResponse(); synchronizersService.fetchPageResults(synchronizers)).buildResponse();
} }
@RequestMapping(value = { "/get/{id}" }, produces = {MediaType.APPLICATION_JSON_VALUE}) @RequestMapping(value = {"/get/{id}"}, produces = {MediaType.APPLICATION_JSON_VALUE})
public ResponseEntity<?> get(@PathVariable("id") String id) { public ResponseEntity<?> get(@PathVariable("id") String id) {
Synchronizers synchronizers=synchronizersService.get(id); Synchronizers synchronizers = synchronizersService.get(id);
synchronizers.setCredentials(PasswordReciprocal.getInstance().decoder(synchronizers.getCredentials())); synchronizers.setCredentials(PasswordReciprocal.getInstance().decoder(synchronizers.getCredentials()));
return new Message<Synchronizers>(synchronizers).buildResponse(); return new Message<>(synchronizers).buildResponse();
} }
@ResponseBody @ResponseBody
@RequestMapping(value={"/update"}, produces = {MediaType.APPLICATION_JSON_VALUE}) @RequestMapping(value = {"/add"}, produces = {MediaType.APPLICATION_JSON_VALUE})
public ResponseEntity<?> update(@RequestBody Synchronizers synchronizers,@CurrentUser UserInfo currentUser) { public ResponseEntity<?> add(@RequestBody Synchronizers synchronizers, @CurrentUser UserInfo currentUser) {
logger.debug("-update : {}" , synchronizers); logger.debug("-add : {}", synchronizers);
synchronizers.setInstId(currentUser.getInstId());
if (StringUtils.isNotBlank(synchronizers.getCredentials())) {
synchronizers.setCredentials(PasswordReciprocal.getInstance().encode(synchronizers.getCredentials()));
}
if (synchronizersService.insert(synchronizers)) {
return new Message<Synchronizers>(Message.SUCCESS).buildResponse();
} else {
return new Message<Synchronizers>(Message.FAIL).buildResponse();
}
}
@ResponseBody
@RequestMapping(value = {"/update"}, produces = {MediaType.APPLICATION_JSON_VALUE})
public ResponseEntity<?> update(@RequestBody Synchronizers synchronizers, @CurrentUser UserInfo currentUser) {
logger.debug("-update : {}", synchronizers);
synchronizers.setInstId(currentUser.getInstId()); synchronizers.setInstId(currentUser.getInstId());
synchronizers.setCredentials(PasswordReciprocal.getInstance().encode(synchronizers.getCredentials())); synchronizers.setCredentials(PasswordReciprocal.getInstance().encode(synchronizers.getCredentials()));
if (synchronizersService.update(synchronizers)) { if (synchronizersService.update(synchronizers)) {
@ -79,26 +90,37 @@ public class SynchronizersController {
} }
@ResponseBody @ResponseBody
@RequestMapping(value={"/synchr"}) @RequestMapping(value = {"/delete"}, produces = {MediaType.APPLICATION_JSON_VALUE})
public ResponseEntity<?> delete(@RequestParam("ids") String ids) {
logger.debug("-delete ids : {} ", ids);
if (synchronizersService.deleteBatch(ids)) {
return new Message<Connectors>(Message.SUCCESS).buildResponse();
} else {
return new Message<Connectors>(Message.FAIL).buildResponse();
}
}
@ResponseBody
@RequestMapping(value = {"/synchr"})
public ResponseEntity<?> synchr(@RequestParam("id") String id) { public ResponseEntity<?> synchr(@RequestParam("id") String id) {
logger.debug("-sync ids : {}" , id); logger.debug("-sync ids : {}", id);
List<String> ids = StringUtils.string2List(id, ","); List<String> ids = StringUtils.string2List(id, ",");
try { try {
for(String sysId : ids) { for (String sysId : ids) {
Synchronizers synchronizer = synchronizersService.get(sysId); Synchronizers synchronizer = synchronizersService.get(sysId);
synchronizer.setCredentials(PasswordReciprocal.getInstance().decoder(synchronizer.getCredentials())); synchronizer.setCredentials(PasswordReciprocal.getInstance().decoder(synchronizer.getCredentials()));
logger.debug("synchronizer {}" , synchronizer); logger.debug("synchronizer {}", synchronizer);
ISynchronizerService synchronizerService = WebContext.getBean(synchronizer.getService(),ISynchronizerService.class); ISynchronizerService synchronizerService = WebContext.getBean(synchronizer.getService(), ISynchronizerService.class);
if(synchronizerService != null) { if (synchronizerService != null) {
synchronizerService.setSynchronizer(synchronizer); synchronizerService.setSynchronizer(synchronizer);
synchronizerService.sync(); synchronizerService.sync();
}else { } else {
logger.info("synchronizer {} not exist .",synchronizer.getService()); logger.info("synchronizer {} not exist .", synchronizer.getService());
} }
} }
}catch(Exception e) { } catch (Exception e) {
logger.error("synchronizer Exception " , e); logger.error("synchronizer Exception ", e);
return new Message<Synchronizers>(Message.FAIL).buildResponse(); return new Message<Synchronizers>(Message.FAIL).buildResponse();
} }