|
|
@@ -1,22 +1,27 @@
|
|
|
package com.uas.sso.service.impl;
|
|
|
|
|
|
+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.core.ICallable;
|
|
|
import com.uas.sso.core.Status;
|
|
|
import com.uas.sso.core.Type;
|
|
|
import com.uas.sso.dao.UserDao;
|
|
|
import com.uas.sso.dao.UserRecordDao;
|
|
|
-import com.uas.sso.entity.User;
|
|
|
-import com.uas.sso.entity.UserAccount;
|
|
|
-import com.uas.sso.entity.UserRecord;
|
|
|
+import com.uas.sso.entity.*;
|
|
|
import com.uas.sso.exception.VisibleError;
|
|
|
import com.uas.sso.logging.LoggerManager;
|
|
|
+import com.uas.sso.logging.SyncBufferedLogger;
|
|
|
import com.uas.sso.logging.UserBufferedLogger;
|
|
|
+import com.uas.sso.service.AppService;
|
|
|
import com.uas.sso.service.UserService;
|
|
|
import com.uas.sso.service.UserValidService;
|
|
|
import com.uas.sso.support.SystemSession;
|
|
|
import com.uas.sso.util.AccountTypeUtils;
|
|
|
import com.uas.sso.util.BeanUtil;
|
|
|
+import com.uas.sso.util.ExecuteUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.util.CollectionUtils;
|
|
|
@@ -24,7 +29,11 @@ import org.springframework.util.StringUtils;
|
|
|
|
|
|
import com.uas.sso.exception.AccountException;
|
|
|
|
|
|
+import javax.persistence.EntityManager;
|
|
|
+import javax.persistence.PersistenceContext;
|
|
|
+import javax.persistence.TypedQuery;
|
|
|
import java.sql.Timestamp;
|
|
|
+import java.util.Arrays;
|
|
|
import java.util.List;
|
|
|
|
|
|
/**
|
|
|
@@ -45,8 +54,13 @@ public class UserServiceImpl implements UserService {
|
|
|
@Autowired
|
|
|
private UserValidService userValidService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private AppService appService;
|
|
|
+
|
|
|
private UserBufferedLogger userLog = LoggerManager.getLogger(UserBufferedLogger.class);
|
|
|
|
|
|
+ private SyncBufferedLogger syncLog = LoggerManager.getLogger(SyncBufferedLogger.class);
|
|
|
+
|
|
|
@Override
|
|
|
public User findByMobile(String mobile, String mobileArea) {
|
|
|
return userDao.findByMobileAndMobileArea(mobile, mobileArea);
|
|
|
@@ -100,6 +114,9 @@ public class UserServiceImpl implements UserService {
|
|
|
|
|
|
userDao.save(user);
|
|
|
userLog.info(user, Type.UPDATE_REGISTER.getValue());
|
|
|
+
|
|
|
+ // 同步到各个应用
|
|
|
+ syncUserInfo(user.getUserUU());
|
|
|
return user;
|
|
|
}
|
|
|
|
|
|
@@ -122,7 +139,9 @@ public class UserServiceImpl implements UserService {
|
|
|
|
|
|
@Override
|
|
|
public User save(User user) {
|
|
|
- return userDao.save(user);
|
|
|
+ user = userDao.save(user);
|
|
|
+ syncUserInfo(user.toView());
|
|
|
+ return user;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -291,6 +310,9 @@ public class UserServiceImpl implements UserService {
|
|
|
|
|
|
// 保存日志
|
|
|
userLog.info(user, Type.UPDATE_MOBILE.getValue());
|
|
|
+
|
|
|
+ // 同步到各个应用
|
|
|
+ syncUserInfo(user.getUserUU());
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -310,5 +332,54 @@ public class UserServiceImpl implements UserService {
|
|
|
|
|
|
// 保存日志
|
|
|
userLog.info(user, Type.UPDATE_EMAIL.getValue());
|
|
|
+
|
|
|
+ // 同步信息到各应用
|
|
|
+ syncUserInfo(user.getUserUU());
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 同步用户信息到各个应用
|
|
|
+ * @param userUU 用户uu号
|
|
|
+ */
|
|
|
+ private void syncUserInfo(Long userUU) {
|
|
|
+ syncUserInfo(findOneView(userUU));
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 同步用户信息到各个应用
|
|
|
+ * @param userView 用户信息视图
|
|
|
+ */
|
|
|
+ private void syncUserInfo(UserView userView) {
|
|
|
+ List<String> apps = appService.findUid();
|
|
|
+
|
|
|
+ ExecuteUtils.execute(new ICallable<Void, String>() {
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Void call(String appId) {
|
|
|
+ App tempApp = appService.findOne(appId);
|
|
|
+ if (tempApp != null && StringUtils.isEmpty(tempApp.getUserControl())
|
|
|
+ && !StringUtils.isEmpty(tempApp.getBackUserUrl())) {
|
|
|
+ String url = tempApp.getBackUserUrl();
|
|
|
+ JSONObject formData = JSON.parseObject(JSON.toJSONString(userView));
|
|
|
+ HttpUtil.ResponseWrap res = null;
|
|
|
+ try {
|
|
|
+ res = HttpUtil.doPost(url, formData, 30000);
|
|
|
+ if (!res.isSuccess()) {
|
|
|
+ syncLog.error(appId, "同步用户信息成功", JSON.toJSONString(userView), res.getContent());
|
|
|
+ } else {
|
|
|
+ syncLog.info(appId, "同步用户信息成功", JSON.toJSONString(userView));
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ syncLog.error(appId, "同步用户信息失败", JSON.toJSONString(userView), e.getMessage());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ }, apps);
|
|
|
+ }
|
|
|
+
|
|
|
+ public UserView findOneView(Long userUU) {
|
|
|
+ User user = findOne(userUU);
|
|
|
+ return user.toView();
|
|
|
}
|
|
|
}
|