|
@@ -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);
|
|
|
|
|
+ }
|
|
|
|
|
+}
|