فهرست منبع

从其他应用调接口注册添加是否同步来源应用方法

wangmh 7 سال پیش
والد
کامیت
26ce152955

+ 33 - 0
sso-common/src/main/java/com/uas/sso/util/AccountUtils.java

@@ -990,6 +990,39 @@ public class AccountUtils {
 		return null;
 	}
 
+	/**
+	 * 商城个人账号增加企业注册
+	 *
+	 * @param userSpaceView 企业信息
+	 * @param admin 管理员信息
+	 * @param isSync 是否同步到来源应用
+	 * @throws Exception
+	 */
+	public static UserSpaceView register(UserSpaceView userSpaceView, UserView admin, boolean isSync) throws Exception {
+		String url = AccountConfig.getSpaceSaveUrl();
+		if (!StringUtils.isEmpty(url)) {
+            url = url + "/register/other";
+            // 不把管理员设置成null会400
+            userSpaceView.setAdmin(null);
+            JSONObject data = JSON.parseObject(JSON.toJSONString(userSpaceView));
+            data.putAll(JSON.parseObject(JSON.toJSONString(admin)));
+            data.put("appId", SSOHelper.getSSOService().getConfig().getAppName());
+            data.put("isSyncSource", isSync);
+            HttpUtil.ResponseWrap res = HttpUtil.doPost(url, data);
+			if (!res.isSuccess()) {
+                throw new Exception(res.getContent());
+            } else {
+                ResultWrap result = JSON.parseObject(res.getContent(), ResultWrap.class);
+                if (!result.isSuccess()) {
+                    throw new Exception(result.getErrMsg());
+                } else {
+                    return JSON.parseObject(result.getContent().toString(), UserSpaceView.class);
+                }
+            }
+		}
+		return null;
+	}
+
 	/**
 	 * 根据token获得用户信息
 	 *

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

@@ -349,12 +349,12 @@ public class UserspaceManagerController extends BaseController {
      * @param userspace 企业信息
      */
     @RequestMapping(value = "/register/other", method = RequestMethod.POST)
-    public ModelMap registerFromOther(Userspace userspace, User admin, String appId) {
+    public ModelMap registerFromOther(Userspace userspace, User admin, String appId, @RequestParam(defaultValue = "true") boolean isSyncSource) {
         if (userspace == null || admin == null) {
             return error("参数错误");
         }
         userspace.setAdmin(admin);
-        return success(userspaceService.register(userspace, appId));
+        return success(userspaceService.register(userspace, appId, isSyncSource));
     }
 
     /**

+ 9 - 0
sso-server/src/main/java/com/uas/sso/service/UserspaceService.java

@@ -23,6 +23,15 @@ public interface UserspaceService {
      */
     Userspace register(Userspace userspace, String appId);
 
+    /**
+     * 企业注册,并开通默认应用
+     * @param userspace 企业信息
+     * @param appId 应用id,记录注册来源
+     * @param isSyncSource 是否同步到来源应用
+     * @return 注册后的企业信息
+     */
+    Userspace register(Userspace userspace, String appId, boolean isSyncSource);
+
     /**
      * 校验企业名称
      * @param spaceName 企业名称

+ 34 - 5
sso-server/src/main/java/com/uas/sso/service/impl/UserspaceServiceImpl.java

@@ -29,6 +29,8 @@ import java.sql.Timestamp;
 import java.util.*;
 import java.util.concurrent.ExecutorService;
 
+import static org.apache.zookeeper.ZooDefs.OpCode.sync;
+
 /**
  * 企业信息service层
  *
@@ -65,6 +67,11 @@ public class UserspaceServiceImpl implements UserspaceService {
 
     @Override
     public Userspace register(Userspace userspace, String appId) {
+        return register(userspace, appId, true);
+    }
+
+    @Override
+    public Userspace register(Userspace userspace, String appId, boolean isSyncSource) {
         User admin = userspace.getAdmin();
         if (admin == null) {
             throw new VisibleError("管理员不能为空");
@@ -77,9 +84,9 @@ public class UserspaceServiceImpl implements UserspaceService {
         checkBusinessCode(userspace.getBusinessCode());
 
         // 设置域名
-       if (StringUtils.isEmpty(userspace.getDomain())) {
-           generateDefaultDomain(userspace);
-       }
+        if (StringUtils.isEmpty(userspace.getDomain())) {
+            generateDefaultDomain(userspace);
+        }
 
         // 设置uu号
         Long maxUU = userspaceDao.findMaxUU();
@@ -122,11 +129,29 @@ public class UserspaceServiceImpl implements UserspaceService {
         }
 
         // 开通应用
-        syncUserSpaceInfo(userspace.toView(), "企业注册", app);
+        syncUserSpaceInfo(userspace.toView(), "企业注册", app, isSyncSource ? null : app);
         return userspace;
     }
 
-    private void syncUserSpaceInfo(final UserSpaceView userSpaceView, final String msg, App otherApp) {
+    /**
+     * 同步企业信息到其他应用
+     * @param userSpaceView 企业信息
+     * @param msg 同步日志信息
+     * @param otherApp 需要同步的其他应用
+     */
+    private void syncUserSpaceInfo(UserSpaceView userSpaceView, String msg, App otherApp) {
+        syncUserSpaceInfo(userSpaceView, msg, otherApp, null);
+    }
+
+    /**
+     * 同步企业信息到其他应用
+     * 如果需要同步的应用和不需要同步的应用相同,则不同步改应用
+     * @param userSpaceView 企业信息
+     * @param msg 同步日志信息
+     * @param otherApp 需要同步的其他应用
+     * @param noSyncApp 不需要同步的应用
+     */
+    private void syncUserSpaceInfo(final UserSpaceView userSpaceView, final String msg, App otherApp, App noSyncApp) {
         // 封装数据
         final UserView admin = userSpaceView.getAdmin();
         userSpaceView.setAdminUU(userSpaceView.getAdmin().getUserUU());
@@ -139,6 +164,10 @@ public class UserspaceServiceImpl implements UserspaceService {
         if (!apps.contains(otherApp)) {
             apps.add(otherApp);
         }
+        if (noSyncApp != null && apps.contains(noSyncApp)) {
+            apps.remove(noSyncApp);
+        }
+        System.out.println(apps.toString());
         syncUserSpaceInfo(formData, msg, apps);
     }