|
|
@@ -1,9 +1,6 @@
|
|
|
package com.uas.platform.b2c.common.account.controller;
|
|
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
-import com.uas.account.entity.UserSpace;
|
|
|
-import com.uas.account.entity.UserSpaceDetail;
|
|
|
-import com.uas.account.entity.UserView;
|
|
|
import com.uas.platform.b2c.common.account.dao.EnterpriseDao;
|
|
|
import com.uas.platform.b2c.common.account.dao.UserDao;
|
|
|
import com.uas.platform.b2c.common.account.dao.UserLoginTimeDao;
|
|
|
@@ -24,6 +21,7 @@ import com.uas.sso.SSOHelper;
|
|
|
import com.uas.sso.SSOToken;
|
|
|
import com.uas.sso.entity.UserAccount;
|
|
|
import com.uas.sso.entity.UserSpaceView;
|
|
|
+import com.uas.sso.entity.UserView;
|
|
|
import com.uas.sso.util.AccountUtils;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.apache.log4j.Logger;
|
|
|
@@ -66,6 +64,8 @@ public class SecurityController {
|
|
|
@Autowired
|
|
|
private EnterpriseService enterpriseService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private com.uas.platform.b2c.common.account.v2.service.UserService userAccountService;
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
@@ -351,9 +351,10 @@ public class SecurityController {
|
|
|
*/
|
|
|
@RequestMapping(value = "/newLogin/other", produces = {"application/javascript"})
|
|
|
@ResponseBody
|
|
|
- public String afterCrossLogin(HttpServletRequest request, HttpServletResponse response, UserAccount userAccount, Integer maxage) {
|
|
|
+ public String afterCrossLogin(HttpServletRequest request, HttpServletResponse response, UserAccount userAccount, Integer maxage) throws Exception {
|
|
|
if (userAccount != null && userAccount.getMobile() != null) {
|
|
|
SSOToken tk = new SSOToken();
|
|
|
+ // 设置cookie
|
|
|
tk.setUid(userAccount.getMobile());
|
|
|
tk.setTime(System.currentTimeMillis());
|
|
|
tk.setData(JSON.toJSONString(userAccount));
|
|
|
@@ -362,75 +363,56 @@ public class SecurityController {
|
|
|
}
|
|
|
SSOHelper.setSSOCookie(request, response, tk, true);
|
|
|
response.setHeader("P3P","CP='IDCDSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT'");
|
|
|
-
|
|
|
response.setHeader("P3P","CP=\"CURaADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSPCOR\"");
|
|
|
- User user = getUserByToken(tk);
|
|
|
- User currentUser = null;
|
|
|
+
|
|
|
+// User user = getUserByToken(tk);
|
|
|
+ User mallUser = new User();
|
|
|
if (userAccount.getMobile() != null) {
|
|
|
// UID表示所有系统公认的唯一标识,这里统一使用手机号
|
|
|
- currentUser = userService.findUserByUserTel(userAccount.getMobile());
|
|
|
+ mallUser = userService.findUserByUserTelNoException(userAccount.getMobile());
|
|
|
} else if (userAccount.getUserUU() != null) {
|
|
|
// dialectUID表示client系统自己的唯一标识,比如user_uu,手机号没设置的情况下使用
|
|
|
- currentUser = userService.findUserByUserUU(userAccount.getUserUU());
|
|
|
+ mallUser = userService.findUserByUserUUNoException(userAccount.getUserUU());
|
|
|
} else {
|
|
|
logger.error(String.format("invalid user %s, please set uid or dialectUID", userAccount.getVipName()));
|
|
|
}
|
|
|
- if (userAccount.getLastLoginTime() != null) {
|
|
|
- currentUser.setLastLoginTime(userAccount.getLastLoginTime().getTime());
|
|
|
+
|
|
|
+ // 企业判断
|
|
|
+ Enterprise enterprise = new Enterprise();
|
|
|
+ if (userAccount.getSpaceUU() != null) {
|
|
|
+ enterprise = enterpriseDao.findByUu(userAccount.getSpaceUU());
|
|
|
+ // 判断商城是否存在当前企业,若存在则设置当前企业即可,若不存在则需新建一个企业后进行设置
|
|
|
+ if (enterprise == null) {
|
|
|
+ // 从账户中心获取当前企业信息尽心保存
|
|
|
+ UserSpaceView userSpaceView = AccountUtils.findBySpaceUU(userAccount.getSpaceUU());
|
|
|
+ if (userSpaceView != null) {
|
|
|
+ enterprise = enterpriseService.update(userSpaceView);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
- if (currentUser != null) {
|
|
|
- userDao.save(currentUser);
|
|
|
+ // 没用用户
|
|
|
+ if (mallUser == null) {
|
|
|
+ UserView userView = AccountUtils.findByUserUU(userAccount.getUserUU());
|
|
|
+ mallUser = userAccountService.save(userView);
|
|
|
}
|
|
|
- if (user != null) {
|
|
|
- /*if (!user.getUserPwd().equals(FlexJsonUtils.fromJson(tk.getData(), com.uas.account.entity.User.class).getPassword())){
|
|
|
- return "successCallback({success:'0'})";
|
|
|
- }*/
|
|
|
- user.setIp(AgentUtils.getIp(request));
|
|
|
- request.getSession().setAttribute("user", user);
|
|
|
- SystemSession.setUser(user);
|
|
|
- log(request, user);
|
|
|
+ if (enterprise != null && !mallUser.getEnterprises().contains(enterprise)) {
|
|
|
+// if (!mallUser.getUserUU().equals(enterprise.getEnAdminuu())) {
|
|
|
+ mallUser.getEnterprises().add(enterprise);
|
|
|
+// }
|
|
|
}
|
|
|
-
|
|
|
- return "successCallback({success:'1'})";
|
|
|
- }
|
|
|
- return "successCallback({success:'0'})";
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- /**
|
|
|
- * 其他地点登录后 同步登录状态
|
|
|
- * @param request
|
|
|
- * @param response
|
|
|
- */
|
|
|
- @RequestMapping(value = "/login/other")
|
|
|
- @ResponseBody
|
|
|
- public String afterCrossOldLogin(HttpServletRequest request, HttpServletResponse response, UserView userView, Integer maxage) {
|
|
|
- String callback =request.getParameter("jsoncallback");
|
|
|
- response.setContentType("text/html;charset=UTF-8");
|
|
|
- if (userView != null && userView.getUid() != null) {
|
|
|
- SSOToken tk = new SSOToken();
|
|
|
- tk.setUid(userView.getUid());
|
|
|
- tk.setTime(System.currentTimeMillis());
|
|
|
- tk.setData(JSON.toJSONString(userView));
|
|
|
- if (null != maxage) {
|
|
|
- request.setAttribute("sso_cookie_maxage", maxage);
|
|
|
+ // 最后一次登录时间
|
|
|
+ Date lastLoginTime = userAccount.getLastLoginTime();
|
|
|
+ if (lastLoginTime != null) {
|
|
|
+ mallUser.setLastLoginTime(userAccount.getLastLoginTime().getTime());
|
|
|
}
|
|
|
- SSOHelper.setSSOCookie(request, response, tk, true);
|
|
|
- response.setHeader("P3P","CP='IDCDSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT'");
|
|
|
-
|
|
|
- response.setHeader("P3P","CP=\"CURaADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSPCOR\"");
|
|
|
- User user = getOldUserByToken(tk);
|
|
|
- if (user != null) {
|
|
|
- if (!user.getUserPwd().equals(FlexJsonUtils.fromJson(tk.getData(), com.uas.account.entity.User.class).getPassword())){
|
|
|
- return "successCallback({success:'0'})";
|
|
|
- }
|
|
|
- user.setIp(AgentUtils.getIp(request));
|
|
|
- request.getSession().setAttribute("user", user);
|
|
|
- SystemSession.setUser(user);
|
|
|
- log(request, user);
|
|
|
+ mallUser = userDao.save(mallUser);
|
|
|
+ mallUser.setEnterprise(enterprise);
|
|
|
+ if (mallUser != null) {
|
|
|
+ mallUser.setIp(AgentUtils.getIp(request));
|
|
|
+ request.getSession().setAttribute("user", mallUser);
|
|
|
+ SystemSession.setUser(mallUser);
|
|
|
+ log(request, mallUser);
|
|
|
}
|
|
|
-
|
|
|
return "successCallback({success:'1'})";
|
|
|
}
|
|
|
return "successCallback({success:'0'})";
|
|
|
@@ -485,7 +467,6 @@ public class SecurityController {
|
|
|
logger.error(String.format("invalid user %s, please set uid or dialectUID", tokenUser.getVipName()));
|
|
|
}
|
|
|
if (authedUser != null && authedUser.getEnterprises() != null) {
|
|
|
-
|
|
|
// 企业资料在client系统自己的唯一标识,比如en_uu
|
|
|
if (tokenUser.getSpaceUU() != null) {
|
|
|
// 如果企业不存在则更新该企业
|
|
|
@@ -544,82 +525,79 @@ public class SecurityController {
|
|
|
return authedUser;
|
|
|
}
|
|
|
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- private User getOldUserByToken(SSOToken token) {
|
|
|
- User authedUser = null;
|
|
|
- if (token.getData() != null) {
|
|
|
- com.uas.account.entity.User tokenUser = FlexJsonUtils.fromJson(token.getData(), com.uas.account.entity.User.class);
|
|
|
- if (tokenUser.getUid() != null) {
|
|
|
- // UID表示所有系统公认的唯一标识,这里统一使用手机号
|
|
|
- authedUser = userService.findUserByUserTel(tokenUser.getUid());
|
|
|
- } else if (tokenUser.getDialectUID() != null) {
|
|
|
- // dialectUID表示client系统自己的唯一标识,比如user_uu,手机号没设置的情况下使用
|
|
|
- authedUser = userService.findUserByUserUU(Long.parseLong(tokenUser.getDialectUID()));
|
|
|
- } else {
|
|
|
- logger.error(String.format("invalid user %s, please set uid or dialectUID", tokenUser.getName()));
|
|
|
- }
|
|
|
- if (authedUser != null && authedUser.getEnterprises() != null) {
|
|
|
- // 企业资料在client系统自己的唯一标识,比如en_uu
|
|
|
- if (tokenUser.getSpaceDialectUID() != null) {
|
|
|
- // 如果企业不存在则更新该企业
|
|
|
- for (Enterprise enterprise : authedUser.getEnterprises()) {
|
|
|
- if (enterprise.getUu().equals(Long.parseLong(tokenUser.getSpaceDialectUID()))){
|
|
|
- authedUser.setEnterprise(enterprise);
|
|
|
- }
|
|
|
- }
|
|
|
- if (null == authedUser.getEnterprise()) {
|
|
|
- Enterprise newEnterprise = enterpriseDao.findByUu(Long.parseLong(tokenUser.getSpaceDialectUID()));
|
|
|
- if (null == newEnterprise) {
|
|
|
- UserSpaceDetail userSpaceDetail = null;
|
|
|
- try {
|
|
|
- userSpaceDetail = com.uas.account.util.AccountUtils.findByBusinessCode(tokenUser.getSpaceUID());
|
|
|
- } catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- UserSpace userSpace = new UserSpace();
|
|
|
- userSpace.setDialectUID(tokenUser.getSpaceDialectUID());
|
|
|
- if (null != userSpaceDetail) {
|
|
|
- enterpriseService.update(userSpace,userSpaceDetail);
|
|
|
- }
|
|
|
- newEnterprise = enterpriseDao.findByUu(Long.parseLong(tokenUser.getSpaceDialectUID()));
|
|
|
- authedUser.setEnterprise(newEnterprise);
|
|
|
- } else {
|
|
|
- authedUser.getEnterprises().add(newEnterprise);
|
|
|
- userDao.save(authedUser);
|
|
|
- authedUser.setEnterprise(newEnterprise);
|
|
|
- }
|
|
|
- }
|
|
|
- } else if (tokenUser.getSpaceUID() != null) {
|
|
|
- for (Enterprise enterprise : authedUser.getEnterprises()) {
|
|
|
- // 企业资料在所有系统公认的唯一标识,这里使用商业登记证号
|
|
|
- if (tokenUser.getSpaceUID().equals(enterprise.getEnBussinessCode())) {
|
|
|
- authedUser.setEnterprise(enterprise);
|
|
|
- //保存登录时间
|
|
|
- List<UserLoginTime> userLoginTimeList = userLoginTimeDao.findByUserUUAndEnUU(authedUser.getUserUU(),enterprise.getUu());
|
|
|
- UserLoginTime userLoginTime;
|
|
|
- if (!CollectionUtils.isEmpty(userLoginTimeList)){
|
|
|
- userLoginTime = userLoginTimeList.get(0);
|
|
|
- }else {
|
|
|
- userLoginTime = new UserLoginTime();
|
|
|
- userLoginTime.setUserUU(authedUser.getUserUU());
|
|
|
- userLoginTime.setEnUU(enterprise.getUu());
|
|
|
- }
|
|
|
- userLoginTime.setLoginTime(System.currentTimeMillis());
|
|
|
- try {
|
|
|
- userLoginTimeDao.save(userLoginTime);
|
|
|
- }catch (Exception e){
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- return authedUser;
|
|
|
- }
|
|
|
+// private User getOldUserByToken(SSOToken token) {
|
|
|
+// User authedUser = null;
|
|
|
+// if (token.getData() != null) {
|
|
|
+// com.uas.account.entity.User tokenUser = FlexJsonUtils.fromJson(token.getData(), com.uas.account.entity.User.class);
|
|
|
+// if (tokenUser.getUid() != null) {
|
|
|
+// // UID表示所有系统公认的唯一标识,这里统一使用手机号
|
|
|
+// authedUser = userService.findUserByUserTel(tokenUser.getUid());
|
|
|
+// } else if (tokenUser.getDialectUID() != null) {
|
|
|
+// // dialectUID表示client系统自己的唯一标识,比如user_uu,手机号没设置的情况下使用
|
|
|
+// authedUser = userService.findUserByUserUU(Long.parseLong(tokenUser.getDialectUID()));
|
|
|
+// } else {
|
|
|
+// logger.error(String.format("invalid user %s, please set uid or dialectUID", tokenUser.getName()));
|
|
|
+// }
|
|
|
+// if (authedUser != null && authedUser.getEnterprises() != null) {
|
|
|
+// // 企业资料在client系统自己的唯一标识,比如en_uu
|
|
|
+// if (tokenUser.getSpaceDialectUID() != null) {
|
|
|
+// // 如果企业不存在则更新该企业
|
|
|
+// for (Enterprise enterprise : authedUser.getEnterprises()) {
|
|
|
+// if (enterprise.getUu().equals(Long.parseLong(tokenUser.getSpaceDialectUID()))){
|
|
|
+// authedUser.setEnterprise(enterprise);
|
|
|
+// }
|
|
|
+// }
|
|
|
+// if (null == authedUser.getEnterprise()) {
|
|
|
+// Enterprise newEnterprise = enterpriseDao.findByUu(Long.parseLong(tokenUser.getSpaceDialectUID()));
|
|
|
+// if (null == newEnterprise) {
|
|
|
+// UserSpaceDetail userSpaceDetail = null;
|
|
|
+// try {
|
|
|
+// userSpaceDetail = com.uas.account.util.AccountUtils.findByBusinessCode(tokenUser.getSpaceUID());
|
|
|
+// } catch (Exception e) {
|
|
|
+// e.printStackTrace();
|
|
|
+// }
|
|
|
+// UserSpace userSpace = new UserSpace();
|
|
|
+// userSpace.setDialectUID(tokenUser.getSpaceDialectUID());
|
|
|
+// if (null != userSpaceDetail) {
|
|
|
+// enterpriseService.update(userSpace,userSpaceDetail);
|
|
|
+// }
|
|
|
+// newEnterprise = enterpriseDao.findByUu(Long.parseLong(tokenUser.getSpaceDialectUID()));
|
|
|
+// authedUser.setEnterprise(newEnterprise);
|
|
|
+// } else {
|
|
|
+// authedUser.getEnterprises().add(newEnterprise);
|
|
|
+// userDao.save(authedUser);
|
|
|
+// authedUser.setEnterprise(newEnterprise);
|
|
|
+// }
|
|
|
+// }
|
|
|
+// } else if (tokenUser.getSpaceUID() != null) {
|
|
|
+// for (Enterprise enterprise : authedUser.getEnterprises()) {
|
|
|
+// // 企业资料在所有系统公认的唯一标识,这里使用商业登记证号
|
|
|
+// if (tokenUser.getSpaceUID().equals(enterprise.getEnBussinessCode())) {
|
|
|
+// authedUser.setEnterprise(enterprise);
|
|
|
+// //保存登录时间
|
|
|
+// List<UserLoginTime> userLoginTimeList = userLoginTimeDao.findByUserUUAndEnUU(authedUser.getUserUU(),enterprise.getUu());
|
|
|
+// UserLoginTime userLoginTime;
|
|
|
+// if (!CollectionUtils.isEmpty(userLoginTimeList)){
|
|
|
+// userLoginTime = userLoginTimeList.get(0);
|
|
|
+// }else {
|
|
|
+// userLoginTime = new UserLoginTime();
|
|
|
+// userLoginTime.setUserUU(authedUser.getUserUU());
|
|
|
+// userLoginTime.setEnUU(enterprise.getUu());
|
|
|
+// }
|
|
|
+// userLoginTime.setLoginTime(System.currentTimeMillis());
|
|
|
+// try {
|
|
|
+// userLoginTimeDao.save(userLoginTime);
|
|
|
+// }catch (Exception e){
|
|
|
+// e.printStackTrace();
|
|
|
+// }
|
|
|
+// break;
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+// return authedUser;
|
|
|
+// }
|
|
|
/**
|
|
|
* 记录登录日志
|
|
|
* @param request
|