瀏覽代碼

fix:添加绑定/解绑用户企业关系限制,错误日志添加参数

wangmh 7 年之前
父節點
當前提交
7740168042

+ 15 - 2
sso-server/src/main/java/com/uas/sso/exception/VisibleError.java

@@ -1,18 +1,22 @@
 package com.uas.sso.exception;
 
+import com.uas.sso.util.StringUtils;
+
 /**
  * 可以直接显示给用户的错误信息
- * 
+ *
  * @author yingp
  *
  */
 public class VisibleError extends RuntimeException {
 
 	/**
-	 * 
+	 *
 	 */
 	private static final long serialVersionUID = 1438034231246046546L;
 
+	private String params;
+
 	public VisibleError() {
 	}
 
@@ -20,4 +24,13 @@ public class VisibleError extends RuntimeException {
 		super(errMsg);
 	}
 
+	public VisibleError(String errMsg, String params) {
+		super(errMsg);
+		this.params = params;
+	}
+
+	public String getErrMsg() {
+	    return getMessage() + (StringUtils.isEmpty(params) ? "" : ", 参数:" + params);
+    }
+
 }

+ 19 - 8
sso-server/src/main/java/com/uas/sso/service/impl/UserServiceImpl.java

@@ -397,16 +397,24 @@ public class UserServiceImpl implements UserService {
     @Override
     public void bindUserspace(String appId, Long userUU, Long spaceUU) {
         if (StringUtils.isEmpty(userUU) || StringUtils.isEmpty(spaceUU)) {
-            throw new VisibleError("参数错误");
+            throw new VisibleError("参数错误", String.format("appId:%s,userUU:%d,spaceUU:%d", appId, userUU, spaceUU));
         }
 
         // 找到用户和企业
         User user = findOne(userUU);
+        if (user == null) {
+            throw new VisibleError("未找到用户信息", String.format("appId:%s,userUU:%d,spaceUU:%d", appId, userUU, spaceUU));
+        }
         Userspace userspace = userspaceService.findOne(spaceUU);
+        if (userspace == null) {
+            throw new VisibleError("未找到企业信息", String.format("appId:%s,userUU:%d,spaceUU:%d", appId, userUU, spaceUU));
+        }
 
         // 将企业添加到用户列表上
         Set<Userspace> userspaces = user.getUserSpaces();
-        userspaces.add(userspace);
+        if (!userspaces.add(userspace)) {
+            throw new VisibleError("用户已绑定该企业", String.format("appId:%s,userUU:%d,spaceUU:%d", appId, userUU, spaceUU));
+        }
 
         // 保存
         userDao.save(user);
@@ -414,7 +422,7 @@ public class UserServiceImpl implements UserService {
         syncUserBindSpace(userUU, spaceUU);
 
         // 保存日志
-        userLogger.info(user, Type.BIND_USERSPACE.getValue() + spaceUU);
+        userLogger.info(user, "从" + appId + "应用:" + Type.BIND_USERSPACE.getValue() + spaceUU);
     }
 
     /**
@@ -457,7 +465,8 @@ public class UserServiceImpl implements UserService {
             executorService.execute(new Runnable() {
                 @Override
                 public void run() {
-                    String url = app.getBackRelationUrl();
+                    String url;
+                    if (StringUtils.isEmpty(url = app.getBackRelationUrl())) { return; }
                     HttpUtil.ResponseWrap res = null;
                     try {
                         res = HttpUtil.doPost(url, formData, 10000);
@@ -478,22 +487,24 @@ public class UserServiceImpl implements UserService {
     @Override
     public void unbindUserspace(Long userUU, Long spaceUU) {
         if (StringUtils.isEmpty(userUU) || StringUtils.isEmpty(spaceUU)) {
-            throw new VisibleError("参数错误");
+            throw new VisibleError("参数错误", String.format("userUU:%d,spaceUU:%d", userUU, spaceUU));
         }
 
         // 找到用户和企业
         User user = findOne(userUU);
         if (user == null) {
-            throw new VisibleError("未找到用户信息");
+            throw new VisibleError("未找到用户信息", String.format("userUU:%d,spaceUU:%d", userUU, spaceUU));
         }
         Userspace userspace = userspaceService.findOne(spaceUU);
         if (userspace == null) {
-            throw new VisibleError("未找到企业信息");
+            throw new VisibleError("未找到企业信息", String.format("userUU:%d,spaceUU:%d", userUU, spaceUU));
         }
 
         // 将企业添加到用户列表上
         Set<Userspace> userspaces = user.getUserSpaces();
-        userspaces.remove(userspace);
+        if (!userspaces.remove(userspace)) {
+            throw new VisibleError("用户不在该企业", String.format("userUU:%d,spaceUU:%d", userUU, spaceUU));
+        }
 
         // 保存
         userDao.save(user);

+ 1 - 1
sso-server/src/main/java/com/uas/sso/web/advice/ExceptionHandlerAdvice.java

@@ -42,7 +42,7 @@ public class ExceptionHandlerAdvice {
 	 */
 	@ExceptionHandler(VisibleError.class)
 	public ResponseEntity<ModelMap> handleVisibleError(VisibleError ex) {
-        logger.warn("{}: {}", ex.getClass().getName(), ex.getMessage(), ex);
+        logger.warn("{}: {}", ex.getClass().getName(), ex.getErrMsg(), ex);
 		HttpHeaders headers = new HttpHeaders();
 		headers.add("Content-Type", "application/json; charset=utf-8");
 		return new ResponseEntity<ModelMap>(error(ex.getMessage()), headers, HttpStatus.OK);