Browse Source

从优软云代码库同步master分支到当前分支

xielq 5 years ago
parent
commit
4224e4a137

+ 2 - 2
build.gradle

@@ -12,10 +12,10 @@ subprojects {
   repositories {
     /*mavenLocal()*/
 
-    maven { url 'http://10.10.100.21:8081/artifactory/libs-release' }
+    maven { url 'http://maven.ubtob.com/artifactory/libs-release' }
     maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
     jcenter()
-    maven { url "http://10.10.100.21:8081/artifactory/libs-snapshot" }
+    maven { url "http://maven.ubtob.com/artifactory/libs-snapshot" }
 
   }
 

+ 1 - 1
gradle/persist-publish.gradle

@@ -1,5 +1,5 @@
 ext {
-    artifactoryBaseUrl = 'http://10.10.100.21:8081/artifactory'
+    artifactoryBaseUrl = 'http://maven.ubtob.com/artifactory'
     artifactorySnapshotRepoUrl = "$artifactoryBaseUrl/libs-snapshot-local"
     artifactoryReleaseRepoUrl = "$artifactoryBaseUrl/libs-release-local"
 }

+ 2 - 2
gradle/publish.gradle

@@ -1,5 +1,5 @@
 ext {
-    artifactoryBaseUrl = 'http://10.10.100.21:8081/artifactory'
+    artifactoryBaseUrl = 'http://maven.ubtob.com/artifactory'
     artifactorySnapshotRepoUrl = "$artifactoryBaseUrl/libs-snapshot-local"
     artifactoryReleaseRepoUrl = "$artifactoryBaseUrl/libs-release-local"
 }
@@ -40,4 +40,4 @@ publishing {
             }
         }
     }
-}
+}

+ 4 - 4
sso-manage-console/build.gradle

@@ -1,13 +1,13 @@
 buildscript {
   repositories {
     maven { url "https://plugins.gradle.org/m2/" }
-    maven { url 'http://10.10.100.21:8081/artifactory/libs-release-local' }
+    maven { url 'http://maven.ubtob.com/artifactory/libs-release-local' }
     maven { url "http://maven.aliyun.com/nexus/content/groups/public/" }
     jcenter()
   }
-  //dependencies {
-  //  classpath 'com.uas.demo.mesh:spring-boot-docker-plugin:1.0.2'
-  //}
+  dependencies {
+    classpath 'com.uas.demo.mesh:spring-boot-docker-plugin:1.0.2'
+  }
 }
 
 plugins {

+ 1 - 1
sso-manage-console/gradle/publish.gradle

@@ -1,5 +1,5 @@
 ext {
-    artifactoryBaseUrl = 'http://10.10.100.21:8081/artifactory'
+    artifactoryBaseUrl = 'http://maven.ubtob.com/artifactory'
     artifactorySnapshotRepoUrl = "$artifactoryBaseUrl/libs-snapshot-local"
     artifactoryReleaseRepoUrl = "$artifactoryBaseUrl/libs-release-local"
 }

+ 4 - 4
sso-server/build.gradle

@@ -1,13 +1,13 @@
 buildscript {
     repositories {
         maven { url "https://plugins.gradle.org/m2/" }
-        maven { url 'http://10.10.100.21:8081/artifactory/libs-release-local' }
+        maven { url 'http://maven.ubtob.com/artifactory/libs-release-local' }
         maven { url "http://maven.aliyun.com/nexus/content/groups/public/" }
         jcenter()
     }
-    //dependencies {
-    //    classpath 'com.uas.demo.mesh:spring-boot-docker-plugin:1.0.2'
-    //}
+    dependencies {
+        classpath 'com.uas.demo.mesh:spring-boot-docker-plugin:1.0.2'
+    }
 }
 
 plugins {

+ 17 - 3
sso-server/src/main/java/com/uas/sso/controller/UserspaceManagerController.java

@@ -189,6 +189,23 @@ public class UserspaceManagerController extends BaseController {
         return success(userspaceService.findOne(spaceUU));
     }
 
+    /**
+     * 根据企业UU查询企业秘钥
+     * @param spaceUU
+     * @return
+     */
+    @RequestMapping(value = "/info/accessSecret", method = RequestMethod.GET)
+    public ModelMap findAccessSecretBySpaceUU(Long spaceUU) {
+        if (StringUtils.isEmpty(spaceUU)) {
+            return error("企业UU号不能为空");
+        }
+        Userspace userspace = userspaceService.findOne(spaceUU);
+        if (userspace != null) {
+            return success(userspaceService.findOne(spaceUU).getAccessSecret());
+        }
+        return error("找不到当前企业信息");
+    }
+
     /**
      * 查询所有企业列表
      */
@@ -360,9 +377,6 @@ public class UserspaceManagerController extends BaseController {
      */
     @RequestMapping(value = "/register/other", method = RequestMethod.POST)
     public ModelMap registerFromOther(Userspace userspace, User admin, String appId, @RequestParam(defaultValue = "true") boolean isSyncSource) {
-        System.err.println("userspace===>"+userspace.toString());
-        System.err.println("admin===>"+admin.toString());
-        System.err.println("appid==>"+appId);
         if (userspace == null || admin == null) {
             return error("参数错误");
         }

+ 7 - 0
sso-server/src/main/java/com/uas/sso/dao/UserDao.java

@@ -156,4 +156,11 @@ public interface UserDao extends JpaRepository<User, Long>, JpaSpecificationExec
      */
     @Query("select max(user.userUU) from User user where user.registerDate < :time")
     Long findMaxUUBefore(@Param("time") Date time);
+
+    /**
+     * 查询IMID为空的用户数据
+     * @param fromApp
+     * @return
+     */
+    List<User> findByImIdIsNullAndFromApp(@Param("fromApp") String fromApp);
 }

+ 9 - 10
sso-server/src/main/java/com/uas/sso/service/impl/UserServiceImpl.java

@@ -416,17 +416,16 @@ public class UserServiceImpl implements UserService {
 
         // 将企业添加到用户列表上
         Set<Userspace> userspaces = user.getUserSpaces();
-        if (!userspaces.add(userspace)) {
-            throw new VisibleError("用户已绑定该企业", String.format("appId:%s,userUU:%d,spaceUU:%d", appId, userUU, spaceUU));
-        }
-
-        // 保存
-        userDao.save(user);
+        if (userspaces.add(userspace)) {
+            // throw new VisibleError("用户已绑定该企业", String.format("appId:%s,userUU:%d,spaceUU:%d", appId, userUU, spaceUU));
+            // 保存
+            userDao.save(user);
 
-        syncUserBindSpace(userUU, spaceUU);
+            syncUserBindSpace(userUU, spaceUU);
 
-        // 保存日志
-        userLogger.info(user, "从" + appId + "应用:" + Type.BIND_USERSPACE.getValue() + spaceUU);
+            // 保存日志
+            userLogger.info(user, "从" + appId + "应用:" + Type.BIND_USERSPACE.getValue() + spaceUU);
+        }
     }
 
     /**
@@ -1040,7 +1039,7 @@ public class UserServiceImpl implements UserService {
         formData.put("password", noEncryPwd);
         formData.put("email", StringUtils.isEmpty(user.getEmail()) ? "0" : user.getEmail());
         formData.put("mobile", user.getMobile());
-        res = HttpUtil.doPost(url, formData, 10000);
+        res = HttpUtil.doPost(url, formData, 30000);
         if (!res.isSuccess()) {
             syncLogger.error(appId, msg + ",同步用户信息失败", formData.toString(), res.getContent());
             throw new Exception(res.getContent());

+ 2 - 1
sso-server/src/main/java/com/uas/sso/sync/service/impl/SyncUserspaceServiceImpl.java

@@ -123,8 +123,9 @@ public class SyncUserspaceServiceImpl implements SyncUserspaceService {
 
         List<SyncUserspaceUsers> syncUsers = new ArrayList<>();
         SyncUser adminUser = null;
-        SyncUserspaceUsers syncUserspaceUsers = new SyncUserspaceUsers();
+
         for (Integer uu : userUu) {
+            SyncUserspaceUsers syncUserspaceUsers = new SyncUserspaceUsers();
             SyncUser syncUser = syncUserDao.findOne(Long.valueOf(uu));
             if (syncUser == null) {
                 syncUser = new SyncUser();

+ 4 - 4
sso-server/src/main/java/com/uas/sso/timertask/SyncTimerTask.java

@@ -66,10 +66,10 @@ public class SyncTimerTask {
                     }
 
                     // 循环同步失败后,发送邮件通知
-                    String email = "645295708@qq.com";
-                    ModelMap data = new ModelMap();
-                    data.addAttribute("ids", logIds).addAttribute("url", info.getSyncUrl());
-                    MessageUtils.sendEmail("templateForSendEmailAfterSyncFail", email, data);
+//                    String email = "645295708@qq.com";
+//                    ModelMap data = new ModelMap();
+//                    data.addAttribute("ids", logIds).addAttribute("url", info.getSyncUrl());
+//                    MessageUtils.sendEmail("templateForSendEmailAfterSyncFail", email, data);
                 }
             });
         }

+ 9 - 0
sso-server/src/test/java/com/uas/sso/controller/LoginControllerTest.java

@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.uas.sso.entity.Token;
 import com.uas.sso.service.TokenService;
+import com.uas.sso.sync.service.SyncUserspaceService;
 import com.uas.sso.util.StringUtil;
 import org.junit.Assert;
 import org.junit.Test;
@@ -33,6 +34,9 @@ public class LoginControllerTest extends BaseControllerTest {
     @Autowired
     private TokenService tokenService;
 
+    @Autowired
+    private SyncUserspaceService syncUserspaceService;
+
     @Test
     public void login() throws Exception {
         Token token = new Token(2);
@@ -160,4 +164,9 @@ public class LoginControllerTest extends BaseControllerTest {
         checkCookie(response, "uid");
         Assert.assertEquals("successCallback({success:'1'})", response.getContentAsString());
     }
+
+    @Test
+    public void testEnterpriseSync() throws Exception {
+        syncUserspaceService.syncUserspaceInfoBySpaceUU(10048356l, false);
+    }
 }

+ 110 - 0
sso-server/src/test/java/com/uas/sso/controller/SyncImControllerTest.java

@@ -0,0 +1,110 @@
+package com.uas.sso.controller;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.uas.sso.common.encrypt.MD5;
+import com.uas.sso.common.util.HttpUtil;
+import com.uas.sso.core.Const;
+import com.uas.sso.dao.UserDao;
+import com.uas.sso.dao.UserspaceDao;
+import com.uas.sso.entity.App;
+import com.uas.sso.entity.Token;
+import com.uas.sso.entity.User;
+import com.uas.sso.entity.Userspace;
+import com.uas.sso.exception.VisibleError;
+import com.uas.sso.service.AppService;
+import com.uas.sso.service.TokenService;
+import com.uas.sso.service.UserService;
+import com.uas.sso.sync.service.SyncUserspaceService;
+import com.uas.sso.util.StringUtil;
+import org.junit.Assert;
+import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.mock.web.MockHttpServletResponse;
+import org.springframework.ui.ModelMap;
+import org.springframework.util.LinkedMultiValueMap;
+import org.springframework.util.MultiValueMap;
+import org.springframework.util.StringUtils;
+
+import javax.servlet.http.Cookie;
+import java.io.UnsupportedEncodingException;
+import java.util.List;
+
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
+import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
+
+/**
+ * @author uas
+ * @date 2018/8/9.
+ */
+public class SyncImControllerTest extends BaseControllerTest {
+
+
+    @Autowired
+    private UserService userService;
+
+    @Autowired
+    private UserDao userDao;
+
+    @Autowired
+    private AppService appService;
+
+    @Autowired
+    private UserspaceDao userspaceDao;
+
+    @Test
+    public void SyncIm() throws Exception {
+        List<User> users = userDao.findByImIdIsNullAndFromApp("uas");
+        Userspace userSpace = userspaceDao.findOne(10030435L);
+
+        String appId = "im";
+        App app = appService.findOne(appId);
+        if (StringUtils.isEmpty(app.getBackUserUrl())) {
+            return;
+        }
+
+        for (User user : userSpace.getUsers()) {
+            if (user.getImId() == null) {
+// 封装数据同步到im
+                String url = app.getBackUserUrl();
+                HttpUtil.ResponseWrap res = null;
+                ModelMap formData = new ModelMap();
+                formData.put("dialectUID", user.getImId());
+                formData.put("realName", StringUtils.isEmpty(user.getRealName()) ? user.getVipName() : user.getRealName());
+                formData.put("password", "111111");
+                formData.put("email", StringUtils.isEmpty(user.getEmail()) ? "0" : user.getEmail());
+                formData.put("mobile", user.getMobile());
+                res = HttpUtil.doPost(url, formData, 10000);
+                if (!res.isSuccess()) {
+                    System.out.println("同步失败");
+                    throw new Exception(res.getContent());
+                } else {
+                    JSONObject obj = JSON.parseObject(res.getContent());
+                    if (obj.getString("resultMsg") != null) {
+                        System.out.println("同步失败");
+                    }
+                    System.out.println("同步成功");
+                    user.setImId(obj.getString("dialectUID"));
+                    user.setPassword(getEncryPassword("111111", user.getSalt()));
+                    userDao.save(user);
+                }
+            }
+
+        }
+    }
+
+    public String getEncryPassword(String noEncryPwd, String salt) {
+        // 超过32认为是已加密过的密文
+        if (noEncryPwd.length() >= 32) {
+            /// 之后添加日志时恢复
+            //logger.error("用户密码加密", String.format("传递过来的密码(%s)必须是未加密的明文", noEncryPwd));
+            throw new VisibleError("密码过长,请重新输入");
+        }
+        // $password{$salt}
+        String password = Const.ENCRY_FORMAT.replace(Const.ENCRY_PARAM_PASSWORD, noEncryPwd);
+        password = password.replace(Const.ENCRY_PARAM_SALT, salt == null ? "" : salt);
+        return MD5.toMD5(password);
+    }
+}