Browse Source

兼容IM的同步请求

huxz 7 years ago
parent
commit
5872620a4a

+ 61 - 24
sso-manage-console/src/main/java/com/uas/sso/sso/backend/config/SyncThreadPool.java

@@ -40,23 +40,17 @@ public class SyncThreadPool {
         this.syncLogDao = syncLogDao;
         this.syncLogDao = syncLogDao;
     }
     }
 
 
-    public void transferDataToOtherPlatforms(String type, List<App> appList, JSONObject data, String message) {
+    public void transferDataToOtherPlatforms(BackInfoType type, List<App> appList, JSONObject data, String message) {
+        boolean isBackUser = false;
 
 
         List<String> urls = new ArrayList<>();
         List<String> urls = new ArrayList<>();
-        if ("BackUser".equals(type)) {
-            urls = getBackUrl(appList, new BackAppUrl() {
-                @Override
-                public String getUrl(App app) {
-                    return app.getBackUserUrl();
-                }
-            });
-        } else if ("BackChangeAdmin".equals(type)) {
-            urls = getBackUrl(appList, new BackAppUrl() {
-                @Override
-                public String getUrl(App app) {
-                    return app.getBackSpaceUrl();
-                }
-            });
+        if (BackInfoType.BACK_USER_INFO.equals(type)) {
+            isBackUser = true;
+            urls = getBackUrl(appList, BACK_USER_URL);
+        }
+
+        if (BackInfoType.BACK_SPACE_INFO.equals(type)) {
+            urls = getBackUrl(appList, BACK_SPACE_URL);
 
 
             User admin = data.getObject("admin", User.class);
             User admin = data.getObject("admin", User.class);
             data.remove("admin");
             data.remove("admin");
@@ -68,36 +62,79 @@ public class SyncThreadPool {
             }
             }
         }
         }
 
 
+        final boolean flag = isBackUser;
         for (String backUrl : urls) {
         for (String backUrl : urls) {
             executorService.execute(new Runnable() {
             executorService.execute(new Runnable() {
                 @Override
                 @Override
                 public void run() {
                 public void run() {
+                    JSONObject params = data;
+
                     String[] split = backUrl.split("_");
                     String[] split = backUrl.split("_");
                     String appId = split[0];
                     String appId = split[0];
                     try {
                     try {
                         String url = split[1];
                         String url = split[1];
-                        logger.info(String.format("Back Url: %s", url));
+                        logger.info(String.format("Back %s Info: %s", appId, url));
+
+                        if (flag && "im".equals(appId)) {
+                            params = new JSONObject();
+                            params.put("email", data.getString("email"));
+                            params.put("idCard", data.getString("idCard"));
+                            params.put("name", data.getString("vipName"));
+                            params.put("sex", data.getString("sex"));
+                            params.put("mobile", data.getString("mobile"));
+                            params.put("password", data.get("newPass"));
+                            params.put("dialectUID", data.getString("idCard"));
+                        }
 
 
-                        HttpUtil.ResponseWrap res = HttpUtil.doPost(url, data, 30000);
+                        HttpUtil.ResponseWrap res = HttpUtil.doPost(url, params, 30000);
                         if (!res.isSuccess()) {
                         if (!res.isSuccess()) {
-                            logError(appId, message + ", 同步信息失败", JSON.toJSONString(data), res.getContent());
+                            logError(appId, message + ", 同步信息失败", JSON.toJSONString(params), res.getContent());
                             logger.error(String.format("%s:同步信息失败, %s, %s, %s", message, appId,
                             logger.error(String.format("%s:同步信息失败, %s, %s, %s", message, appId,
-                                    JSON.toJSONString(data), res.getContent()));
+                                    JSON.toJSONString(params), res.getContent()));
                         } else {
                         } else {
-                            logInfo(appId, message + ", 同步信息成功", JSON.toJSONString(data));
+                            if (flag && "im".equals(appId)) {
+                                logger.info(String.format("IMID: %s", res.getContent()));
+                            }
+                            logInfo(appId, message + ", 同步信息成功", JSON.toJSONString(params));
                             logger.info(String.format("%s:同步信息成功, %s, %s", message, appId,
                             logger.info(String.format("%s:同步信息成功, %s, %s", message, appId,
-                                    JSON.toJSONString(data)));
+                                    JSON.toJSONString(params)));
                         }
                         }
                     } catch (Exception e) {
                     } catch (Exception e) {
-                        logError(appId, message + ", 同步信息失败", JSON.toJSONString(data), e.getMessage());
+                        logError(appId, message + ", 同步信息失败", JSON.toJSONString(params), e.getMessage());
                         logger.error(String.format("%s:同步信息失败, %s, %s, %s", message, appId,
                         logger.error(String.format("%s:同步信息失败, %s, %s, %s", message, appId,
-                                JSON.toJSONString(data), e.getMessage()));
+                                JSON.toJSONString(params), e.getMessage()));
                     }
                     }
                 }
                 }
             });
             });
         }
         }
     }
     }
 
 
+    public enum BackInfoType {
+        /**
+         * 同步用户信息
+         */
+        BACK_USER_INFO,
+
+        /**
+         * 同步企业信息
+         */
+        BACK_SPACE_INFO
+    }
+
+    private final BackAppUrl BACK_USER_URL = new BackAppUrl() {
+        @Override
+        public String getUrl(App app) {
+            return app.getBackUserUrl();
+        }
+    };
+
+    private final BackAppUrl BACK_SPACE_URL = new BackAppUrl() {
+        @Override
+        public String getUrl(App app) {
+            return app.getBackSpaceUrl();
+        }
+    };
+
     private void logError(String appId, String message, String data, String errorMessage) {
     private void logError(String appId, String message, String data, String errorMessage) {
         SyncLog log = new SyncLog(appId, message, data, "ERROR", errorMessage);
         SyncLog log = new SyncLog(appId, message, data, "ERROR", errorMessage);
         syncLogDao.save(log);
         syncLogDao.save(log);
@@ -111,7 +148,7 @@ public class SyncThreadPool {
     private List<String> getBackUrl(List<App> appList, BackAppUrl backAppUrl) {
     private List<String> getBackUrl(List<App> appList, BackAppUrl backAppUrl) {
         List<String> urls = new ArrayList<>();
         List<String> urls = new ArrayList<>();
 
 
-        if (CollectionUtils.isEmpty(appList)) {
+        if (CollectionUtils.isEmpty(appList) || backAppUrl == null) {
             appList = Collections.emptyList();
             appList = Collections.emptyList();
         }
         }
 
 

+ 14 - 4
sso-manage-console/src/main/java/com/uas/sso/sso/backend/service/impl/AppealServiceImpl.java

@@ -13,6 +13,7 @@ import com.uas.sso.entity.Appeal;
 import com.uas.sso.entity.User;
 import com.uas.sso.entity.User;
 import com.uas.sso.entity.Userspace;
 import com.uas.sso.entity.Userspace;
 import com.uas.sso.sso.backend.config.SyncThreadPool;
 import com.uas.sso.sso.backend.config.SyncThreadPool;
+import com.uas.sso.sso.backend.config.SyncThreadPool.BackInfoType;
 import com.uas.sso.sso.backend.dao.AdminChangeRecordDao;
 import com.uas.sso.sso.backend.dao.AdminChangeRecordDao;
 import com.uas.sso.sso.backend.dto.AddNewUserInfo;
 import com.uas.sso.sso.backend.dto.AddNewUserInfo;
 import com.uas.sso.sso.backend.entity.AdminChangeRecord;
 import com.uas.sso.sso.backend.entity.AdminChangeRecord;
@@ -160,11 +161,11 @@ public class AppealServiceImpl implements AppealService {
     public void approveAppealRequest(Long appealId, Boolean isPass) {
     public void approveAppealRequest(Long appealId, Boolean isPass) {
         Assert.notNull(isPass, "审核状态不能为空");
         Assert.notNull(isPass, "审核状态不能为空");
         Appeal appeal = assertAppealExist(appealId);
         Appeal appeal = assertAppealExist(appealId);
+        Assert.hasText(appeal.getContactName(), "联系人邮件不能为空");
 
 
         appeal.setAuditor("系统管理员");
         appeal.setAuditor("系统管理员");
         appeal.setAuditDate(new Timestamp(System.currentTimeMillis()));
         appeal.setAuditDate(new Timestamp(System.currentTimeMillis()));
         appeal.setStatus((short) (isPass ? 2 : 3));
         appeal.setStatus((short) (isPass ? 2 : 3));
-        appealDao.save(appeal);
 
 
         if (!isPass) {
         if (!isPass) {
             String spaceName = null;
             String spaceName = null;
@@ -178,6 +179,8 @@ public class AppealServiceImpl implements AppealService {
 
 
                 spaceName = userSpace.getSpaceName();
                 spaceName = userSpace.getSpaceName();
             }
             }
+            appealDao.save(appeal);
+
             synSendMail(appeal.getContactEmail(), appeal.getType(), appeal.getContactName(), spaceName, isPass);
             synSendMail(appeal.getContactEmail(), appeal.getType(), appeal.getContactName(), spaceName, isPass);
             return;
             return;
         }
         }
@@ -190,6 +193,7 @@ public class AppealServiceImpl implements AppealService {
             User user = assertUserExist(appeal.getSubmitterUU());
             User user = assertUserExist(appeal.getSubmitterUU());
             user.setMobile(appeal.getMobile());
             user.setMobile(appeal.getMobile());
 
 
+            String newPass = null;
             String message = "[后台]更换手机号申诉";
             String message = "[后台]更换手机号申诉";
             if (RESET_PASS.equals(appeal.getType())) {
             if (RESET_PASS.equals(appeal.getType())) {
                 message = "[后台]重置密码申诉";
                 message = "[后台]重置密码申诉";
@@ -198,14 +202,17 @@ public class AppealServiceImpl implements AppealService {
                 Assert.hasText(password, "申诉修改密码时,密码为必须字段");
                 Assert.hasText(password, "申诉修改密码时,密码为必须字段");
                 boolean validPassword = password.length() >= 6 && password.length() <= 20;
                 boolean validPassword = password.length() >= 6 && password.length() <= 20;
                 Assert.isTrue(validPassword, "申诉修改密码时,提交的密码长度为6~20位");
                 Assert.isTrue(validPassword, "申诉修改密码时,提交的密码长度为6~20位");
+                newPass = password;
 
 
                 user.setPassword(getEncryPassword(Const.ENCRY_FORMAT, password, user.getSalt()));
                 user.setPassword(getEncryPassword(Const.ENCRY_FORMAT, password, user.getSalt()));
             }
             }
             userDao.save(user);
             userDao.save(user);
+            appealDao.save(appeal);
 
 
             List<App> appList = appDao.findAll();
             List<App> appList = appDao.findAll();
             JSONObject data = JacksonUtils.fromJson(JacksonUtils.toJson(user.toView()), JSONObject.class);
             JSONObject data = JacksonUtils.fromJson(JacksonUtils.toJson(user.toView()), JSONObject.class);
-            syncThreadPool.transferDataToOtherPlatforms("BackChangeAdmin", appList, data, "[后台]更换管理员申诉");
+            data.put("newPass", newPass);
+            syncThreadPool.transferDataToOtherPlatforms(BackInfoType.BACK_USER_INFO, appList, data, message);
 
 
             synSendMail(appeal.getContactEmail(), appeal.getType(), appeal.getContactName(), null, isPass);
             synSendMail(appeal.getContactEmail(), appeal.getType(), appeal.getContactName(), null, isPass);
         } else if (CHANGE_ADMIN.equals(appeal.getType())) {
         } else if (CHANGE_ADMIN.equals(appeal.getType())) {
@@ -276,8 +283,11 @@ public class AppealServiceImpl implements AppealService {
             space.setValidCode((short) 2);
             space.setValidCode((short) 2);
             spaceDao.save(space);
             spaceDao.save(space);
 
 
-            JSONObject data = JacksonUtils.fromJson(JacksonUtils.toJson(space), JSONObject.class);
-            syncThreadPool.transferDataToOtherPlatforms("BackChangeAdmin", space.getApps(), data, "[后台]更换管理员申诉");
+            appealDao.save(appeal);
+
+            JSONObject data = JacksonUtils.fromJson(JacksonUtils.toJson(space.toView()), JSONObject.class);
+            syncThreadPool.transferDataToOtherPlatforms(BackInfoType.BACK_SPACE_INFO, space.getApps(), data, "[后台]更换管理员申诉");
+
             synSendMail(appeal.getContactEmail(), appeal.getType(), appeal.getContactName(), space.getSpaceName(), isPass);
             synSendMail(appeal.getContactEmail(), appeal.getType(), appeal.getContactName(), space.getSpaceName(), isPass);
         } else {
         } else {
             logger.info("暂无支持申诉类型");
             logger.info("暂无支持申诉类型");

+ 10 - 3
sso-manage-console/src/main/java/com/uas/sso/sso/backend/service/impl/UserBackendServiceImpl.java

@@ -13,6 +13,7 @@ import com.uas.sso.entity.UserValid;
 import com.uas.sso.entity.Userspace;
 import com.uas.sso.entity.Userspace;
 import com.uas.sso.sso.backend.AuthenticationUtils;
 import com.uas.sso.sso.backend.AuthenticationUtils;
 import com.uas.sso.sso.backend.config.SyncThreadPool;
 import com.uas.sso.sso.backend.config.SyncThreadPool;
+import com.uas.sso.sso.backend.config.SyncThreadPool.BackInfoType;
 import com.uas.sso.sso.backend.dto.AddNewUserInfo;
 import com.uas.sso.sso.backend.dto.AddNewUserInfo;
 import com.uas.sso.sso.backend.dto.UpdateUserInfo;
 import com.uas.sso.sso.backend.dto.UpdateUserInfo;
 import com.uas.sso.sso.backend.exceptions.ValidationFailedException;
 import com.uas.sso.sso.backend.exceptions.ValidationFailedException;
@@ -220,7 +221,9 @@ public class UserBackendServiceImpl implements UserBackendService {
 
 
         existUser = userInfo.fillUserInfo(existUser);
         existUser = userInfo.fillUserInfo(existUser);
 
 
+        String newPass = null;
         if (existUser.getPassword().length() < 32) {
         if (existUser.getPassword().length() < 32) {
+            newPass = existUser.getPassword();
             String encryPassword = AuthenticationUtils
             String encryPassword = AuthenticationUtils
                     .getEncryPassword(Const.ENCRY_FORMAT, existUser.getPassword(),
                     .getEncryPassword(Const.ENCRY_FORMAT, existUser.getPassword(),
                             existUser.getSalt());
                             existUser.getSalt());
@@ -231,7 +234,8 @@ public class UserBackendServiceImpl implements UserBackendService {
 
 
         List<App> appList = appDao.findAll();
         List<App> appList = appDao.findAll();
         JSONObject data = JacksonUtils.fromJson(JacksonUtils.toJson(existUser.toView()), JSONObject.class);
         JSONObject data = JacksonUtils.fromJson(JacksonUtils.toJson(existUser.toView()), JSONObject.class);
-        syncThreadPool.transferDataToOtherPlatforms("BackUser", appList, data, "[后台]修改用户信息");
+        data.put("newPass", newPass);
+        syncThreadPool.transferDataToOtherPlatforms(BackInfoType.BACK_USER_INFO, appList, data, "[后台]修改用户信息");
 
 
         return existUser;
         return existUser;
     }
     }
@@ -245,6 +249,8 @@ public class UserBackendServiceImpl implements UserBackendService {
             user.setMobileArea(Const.CONTINENT);
             user.setMobileArea(Const.CONTINENT);
         }
         }
 
 
+        String newPass = userInfo.getPassword();
+
         user.setRegisterDate(new Timestamp(System.currentTimeMillis()));
         user.setRegisterDate(new Timestamp(System.currentTimeMillis()));
         Long uu = userDao.findMaxUU();
         Long uu = userDao.findMaxUU();
         user.setUserUU(uu == null ? 10000 : (uu + 1));
         user.setUserUU(uu == null ? 10000 : (uu + 1));
@@ -261,7 +267,8 @@ public class UserBackendServiceImpl implements UserBackendService {
 
 
         List<App> appList = appDao.findAll();
         List<App> appList = appDao.findAll();
         JSONObject data = JacksonUtils.fromJson(JacksonUtils.toJson(user.toView()), JSONObject.class);
         JSONObject data = JacksonUtils.fromJson(JacksonUtils.toJson(user.toView()), JSONObject.class);
-        syncThreadPool.transferDataToOtherPlatforms("BackUser", appList, data, "[后台]新增用户信息");
+        data.put("newPass", newPass);
+        syncThreadPool.transferDataToOtherPlatforms(BackInfoType.BACK_USER_INFO, appList, data, "[后台]新增用户信息");
 
 
         return user;
         return user;
     }
     }
@@ -310,7 +317,7 @@ public class UserBackendServiceImpl implements UserBackendService {
 
 
         List<App> appList = appDao.findAll();
         List<App> appList = appDao.findAll();
         JSONObject data = JacksonUtils.fromJson(JacksonUtils.toJson(userInfo.toView()), JSONObject.class);
         JSONObject data = JacksonUtils.fromJson(JacksonUtils.toJson(userInfo.toView()), JSONObject.class);
-        syncThreadPool.transferDataToOtherPlatforms("BackUser", appList, data, "[后台]用户身份认证");
+        syncThreadPool.transferDataToOtherPlatforms(BackInfoType.BACK_USER_INFO, appList, data, "[后台]用户身份认证");
 
 
         return userInfo;
         return userInfo;
     }
     }

+ 13 - 12
sso-manage-console/src/main/java/com/uas/sso/sso/backend/service/impl/UserSpaceServiceImpl.java

@@ -11,6 +11,7 @@ import com.uas.sso.entity.User;
 import com.uas.sso.entity.Userspace;
 import com.uas.sso.entity.Userspace;
 import com.uas.sso.entity.UserspaceValid;
 import com.uas.sso.entity.UserspaceValid;
 import com.uas.sso.sso.backend.config.SyncThreadPool;
 import com.uas.sso.sso.backend.config.SyncThreadPool;
+import com.uas.sso.sso.backend.config.SyncThreadPool.BackInfoType;
 import com.uas.sso.sso.backend.dao.AdminChangeRecordDao;
 import com.uas.sso.sso.backend.dao.AdminChangeRecordDao;
 import com.uas.sso.sso.backend.dto.UpdateSpaceInfo;
 import com.uas.sso.sso.backend.dto.UpdateSpaceInfo;
 import com.uas.sso.sso.backend.entity.AdminChangeRecord;
 import com.uas.sso.sso.backend.entity.AdminChangeRecord;
@@ -136,8 +137,8 @@ public class UserSpaceServiceImpl implements UserSpaceService {
         userspace = spaceInfo.fillSpaceInfo(userspace);
         userspace = spaceInfo.fillSpaceInfo(userspace);
         userspaceDao.save(userspace);
         userspaceDao.save(userspace);
 
 
-        JSONObject data = JacksonUtils.fromJson(JacksonUtils.toJson(userspace), JSONObject.class);
-        syncThreadPool.transferDataToOtherPlatforms("BackChangeAdmin", userspace.getApps(), data, "[后台]修改企业信息");
+        JSONObject data = JacksonUtils.fromJson(JacksonUtils.toJson(userspace.toView()), JSONObject.class);
+        syncThreadPool.transferDataToOtherPlatforms(BackInfoType.BACK_SPACE_INFO, userspace.getApps(), data, "[后台]修改企业信息");
 
 
         return userspace;
         return userspace;
     }
     }
@@ -157,8 +158,8 @@ public class UserSpaceServiceImpl implements UserSpaceService {
         }
         }
         userspaceDao.save(space);
         userspaceDao.save(space);
 
 
-        JSONObject data = JacksonUtils.fromJson(JacksonUtils.toJson(space), JSONObject.class);
-        syncThreadPool.transferDataToOtherPlatforms("BackChangeAdmin", space.getApps(), data, "[后台]企业解绑用户");
+        JSONObject data = JacksonUtils.fromJson(JacksonUtils.toJson(space.toView()), JSONObject.class);
+        syncThreadPool.transferDataToOtherPlatforms(BackInfoType.BACK_SPACE_INFO, space.getApps(), data, "[后台]企业解绑用户");
 
 
         return space;
         return space;
     }
     }
@@ -202,8 +203,8 @@ public class UserSpaceServiceImpl implements UserSpaceService {
         space.setAdmin(admin);
         space.setAdmin(admin);
         userspaceDao.save(space);
         userspaceDao.save(space);
 
 
-        JSONObject data = JacksonUtils.fromJson(JacksonUtils.toJson(space), JSONObject.class);
-        syncThreadPool.transferDataToOtherPlatforms("BackChangeAdmin", space.getApps(), data, "[后台]更换企业管理员");
+        JSONObject data = JacksonUtils.fromJson(JacksonUtils.toJson(space.toView()), JSONObject.class);
+        syncThreadPool.transferDataToOtherPlatforms(BackInfoType.BACK_SPACE_INFO, space.getApps(), data, "[后台]更换企业管理员");
         return space;
         return space;
     }
     }
 
 
@@ -259,8 +260,8 @@ public class UserSpaceServiceImpl implements UserSpaceService {
 
 
         spaceValidDao.save(spaceValid);
         spaceValidDao.save(spaceValid);
 
 
-        JSONObject data = JacksonUtils.fromJson(JacksonUtils.toJson(space), JSONObject.class);
-        syncThreadPool.transferDataToOtherPlatforms("BackChangeAdmin", space.getApps(), data, "[后台]企业信息认证");
+        JSONObject data = JacksonUtils.fromJson(JacksonUtils.toJson(space.toView()), JSONObject.class);
+        syncThreadPool.transferDataToOtherPlatforms(BackInfoType.BACK_SPACE_INFO, space.getApps(), data, "[后台]企业信息认证");
         return space;
         return space;
     }
     }
 
 
@@ -277,8 +278,8 @@ public class UserSpaceServiceImpl implements UserSpaceService {
 
 
             userspaceDao.save(space);
             userspaceDao.save(space);
 
 
-            JSONObject data = JacksonUtils.fromJson(JacksonUtils.toJson(space), JSONObject.class);
-            syncThreadPool.transferDataToOtherPlatforms("BackChangeAdmin", space.getApps(), data, "[后台]绑定用户到企业");
+            JSONObject data = JacksonUtils.fromJson(JacksonUtils.toJson(space.toView()), JSONObject.class);
+            syncThreadPool.transferDataToOtherPlatforms(BackInfoType.BACK_SPACE_INFO, space.getApps(), data, "[后台]绑定用户到企业");
         }
         }
     }
     }
 
 
@@ -305,8 +306,8 @@ public class UserSpaceServiceImpl implements UserSpaceService {
             List<App> appList = new ArrayList<>();
             List<App> appList = new ArrayList<>();
             appList.add(app);
             appList.add(app);
 
 
-            JSONObject data = JacksonUtils.fromJson(JacksonUtils.toJson(space), JSONObject.class);
-            syncThreadPool.transferDataToOtherPlatforms("BackChangeAdmin", appList, data, "[后台]开通应用同步企业信息");
+            JSONObject data = JacksonUtils.fromJson(JacksonUtils.toJson(space.toView()), JSONObject.class);
+            syncThreadPool.transferDataToOtherPlatforms(BackInfoType.BACK_SPACE_INFO, appList, data, "[后台]开通应用同步企业信息");
         }
         }
         return space;
         return space;
     }
     }