Browse Source

登录后按照企业 顺序排序

wangdy 8 years ago
parent
commit
19f24fb78d

+ 19 - 0
src/main/java/com/uas/platform/b2c/common/account/controller/AuthenticationController.java

@@ -1,7 +1,9 @@
 package com.uas.platform.b2c.common.account.controller;
 package com.uas.platform.b2c.common.account.controller;
 
 
+import com.uas.platform.b2c.common.account.dao.UserLoginTimeDao;
 import com.uas.platform.b2c.common.account.model.User;
 import com.uas.platform.b2c.common.account.model.User;
 import com.uas.platform.b2c.common.account.model.UserInfo;
 import com.uas.platform.b2c.common.account.model.UserInfo;
+import com.uas.platform.b2c.common.account.model.UserLoginTime;
 import com.uas.platform.b2c.common.account.model.UserQuestion;
 import com.uas.platform.b2c.common.account.model.UserQuestion;
 import com.uas.platform.b2c.common.account.service.UserQuestionService;
 import com.uas.platform.b2c.common.account.service.UserQuestionService;
 import com.uas.platform.b2c.common.account.service.UserService;
 import com.uas.platform.b2c.common.account.service.UserService;
@@ -10,6 +12,7 @@ import java.util.List;
 import net.sf.ehcache.CacheManager;
 import net.sf.ehcache.CacheManager;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.HttpStatus;
+import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
 
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletRequest;
@@ -27,6 +30,9 @@ public class AuthenticationController {
 	@Autowired
 	@Autowired
 	private UserQuestionService userQuestionService;
 	private UserQuestionService userQuestionService;
 
 
+	@Autowired
+	private UserLoginTimeDao userLoginTimeDao;
+
 	@RequestMapping(method = RequestMethod.GET, headers = "Accept=application/json")
 	@RequestMapping(method = RequestMethod.GET, headers = "Accept=application/json")
 	@ResponseBody
 	@ResponseBody
 	@ResponseStatus(value = HttpStatus.OK)
 	@ResponseStatus(value = HttpStatus.OK)
@@ -38,6 +44,19 @@ public class AuthenticationController {
 		List<UserQuestion> userQuestion = userQuestionService.findUserQuestionByUserUUOrderBySortAsc(sysUser.getUserUU());
 		List<UserQuestion> userQuestion = userQuestionService.findUserQuestionByUserUUOrderBySortAsc(sysUser.getUserUU());
 		User user = userService.findUserByUserUU(sysUser.getUserUU());
 		User user = userService.findUserByUserUU(sysUser.getUserUU());
 		user.setEnterprise(sysUser.getEnterprise());
 		user.setEnterprise(sysUser.getEnterprise());
+		//保存登录时间
+		List<UserLoginTime> userLoginTimeList = userLoginTimeDao.findByUserUUAndEnUU(user.getUserUU(),user.getEnterprise().getUu());
+		UserLoginTime userLoginTime;
+		if (!CollectionUtils.isEmpty(userLoginTimeList)){
+			userLoginTime = userLoginTimeList.get(0);
+		}else {
+			userLoginTime = new UserLoginTime();
+			userLoginTime.setUserUU(user.getUserUU());
+			userLoginTime.setEnUU(user.getEnterprise().getUu());
+		}
+		userLoginTime.setLoginTime(System.currentTimeMillis());
+		userLoginTimeDao.save(userLoginTime);
+		user = userService.findUserByUserUU(user.getUserUU());
 		UserInfo userInfo = new UserInfo(user);
 		UserInfo userInfo = new UserInfo(user);
 		if(userQuestion!=null){
 		if(userQuestion!=null){
 			if(userQuestion.size()>0){
 			if(userQuestion.size()>0){

+ 19 - 0
src/main/java/com/uas/platform/b2c/common/account/controller/SecurityController.java

@@ -2,9 +2,11 @@ package com.uas.platform.b2c.common.account.controller;
 
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSON;
 import com.uas.account.entity.UserView;
 import com.uas.account.entity.UserView;
+import com.uas.platform.b2c.common.account.dao.UserLoginTimeDao;
 import com.uas.platform.b2c.common.account.model.Enterprise;
 import com.uas.platform.b2c.common.account.model.Enterprise;
 import com.uas.platform.b2c.common.account.model.SigninLog;
 import com.uas.platform.b2c.common.account.model.SigninLog;
 import com.uas.platform.b2c.common.account.model.User;
 import com.uas.platform.b2c.common.account.model.User;
+import com.uas.platform.b2c.common.account.model.UserLoginTime;
 import com.uas.platform.b2c.common.account.service.SigninLogService;
 import com.uas.platform.b2c.common.account.service.SigninLogService;
 import com.uas.platform.b2c.common.account.service.UserService;
 import com.uas.platform.b2c.common.account.service.UserService;
 import com.uas.platform.b2c.core.support.SystemSession;
 import com.uas.platform.b2c.core.support.SystemSession;
@@ -24,12 +26,14 @@ import org.springframework.mobile.device.LiteDeviceResolver;
 import org.springframework.mobile.device.site.SitePreference;
 import org.springframework.mobile.device.site.SitePreference;
 import org.springframework.stereotype.Controller;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.ModelMap;
 import org.springframework.ui.ModelMap;
+import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
 
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpSession;
 import javax.servlet.http.HttpSession;
 import java.io.IOException;
 import java.io.IOException;
+import java.util.List;
 
 
 /**
 /**
  * 处理登录和登录跳转
  * 处理登录和登录跳转
@@ -45,6 +49,9 @@ public class SecurityController {
 	private UserService userService;
 	private UserService userService;
 	@Autowired
 	@Autowired
 	private SigninLogService signinLogService;
 	private SigninLogService signinLogService;
+	@Autowired
+	private UserLoginTimeDao userLoginTimeDao;
+
 	private final DeviceResolver deviceResolver = new LiteDeviceResolver();
 	private final DeviceResolver deviceResolver = new LiteDeviceResolver();
 
 
 	/**
 	/**
@@ -281,6 +288,18 @@ public class SecurityController {
 						// 企业资料在所有系统公认的唯一标识,这里使用商业登记证号
 						// 企业资料在所有系统公认的唯一标识,这里使用商业登记证号
 						if (tokenUser.getSpaceUID().equals(enterprise.getEnBussinessCode())) {
 						if (tokenUser.getSpaceUID().equals(enterprise.getEnBussinessCode())) {
 							authedUser.setEnterprise(enterprise);
 							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());
+							userLoginTimeDao.save(userLoginTime);
 							break;
 							break;
 						}
 						}
 					}
 					}

+ 15 - 0
src/main/java/com/uas/platform/b2c/common/account/dao/UserLoginTimeDao.java

@@ -0,0 +1,15 @@
+package com.uas.platform.b2c.common.account.dao;
+
+
+import com.uas.platform.b2c.common.account.model.UserLoginTime;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+@Repository
+public interface UserLoginTimeDao extends JpaSpecificationExecutor<UserLoginTime>, JpaRepository<UserLoginTime, Long> {
+
+    List<UserLoginTime> findByUserUUAndEnUU (Long userUU, Long enUU);
+}

+ 19 - 4
src/main/java/com/uas/platform/b2c/common/account/model/User.java

@@ -2,7 +2,9 @@ package com.uas.platform.b2c.common.account.model;
 
 
 import com.alibaba.fastjson.annotation.JSONField;
 import com.alibaba.fastjson.annotation.JSONField;
 import com.uas.platform.core.model.Constant;
 import com.uas.platform.core.model.Constant;
-import java.util.Date;
+
+import java.util.*;
+
 import org.codehaus.jackson.annotate.JsonIgnore;
 import org.codehaus.jackson.annotate.JsonIgnore;
 import org.hibernate.annotations.Cache;
 import org.hibernate.annotations.Cache;
 import org.hibernate.annotations.CacheConcurrencyStrategy;
 import org.hibernate.annotations.CacheConcurrencyStrategy;
@@ -13,9 +15,6 @@ import org.springframework.util.CollectionUtils;
 import javax.persistence.*;
 import javax.persistence.*;
 import javax.validation.constraints.NotNull;
 import javax.validation.constraints.NotNull;
 import java.io.Serializable;
 import java.io.Serializable;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Set;
 
 
 /**
 /**
  * 用户信息
  * 用户信息
@@ -128,6 +127,14 @@ public class User implements Serializable {
 	@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
 	@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
 	private Set<Enterprise> enterprises;
 	private Set<Enterprise> enterprises;
 
 
+	/**
+	 * 所属公司的最后登陆时间
+	 */
+	@JoinColumn(name = "user_uu")
+	@OneToMany(cascade = { CascadeType.ALL }, fetch = FetchType.LAZY)
+	@OrderBy("login_time")
+	private Set<UserLoginTime> userLoginTimeSet;
+
 	/**
 	/**
 	 * 所属当前登录公司
 	 * 所属当前登录公司
 	 */
 	 */
@@ -426,6 +433,14 @@ public class User implements Serializable {
 		this.ip = ip;
 		this.ip = ip;
 	}
 	}
 
 
+	public Set<UserLoginTime> getUserLoginTimeSet() {
+		return userLoginTimeSet;
+	}
+
+	public void setUserLoginTimeSet(Set<UserLoginTime> userLoginTimeSet) {
+		this.userLoginTimeSet = userLoginTimeSet;
+	}
+
 	/**
 	/**
 	 * 获取用户所属企业UU号
 	 * 获取用户所属企业UU号
 	 *
 	 *

+ 12 - 4
src/main/java/com/uas/platform/b2c/common/account/model/UserInfo.java

@@ -5,10 +5,7 @@ import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageImpl;
 import org.springframework.data.domain.PageImpl;
 import org.springframework.util.CollectionUtils;
 import org.springframework.util.CollectionUtils;
 
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 
 /**
 /**
  * 用户简单信息,前台程序使用
  * 用户简单信息,前台程序使用
@@ -24,6 +21,7 @@ public class UserInfo {
 		this.userName = user.getUserName();
 		this.userName = user.getUserName();
 		this.userTel = user.getUserTel();
 		this.userTel = user.getUserTel();
 		this.userSex = user.getUserSex();
 		this.userSex = user.getUserSex();
+		this.userLoginTimeSet = user.getUserLoginTimeSet();
 		this.pwdEnable = user.getPwdSecLevel()!=null && user.getPwdSecLevel()>1?true:false;
 		this.pwdEnable = user.getPwdSecLevel()!=null && user.getPwdSecLevel()>1?true:false;
 		this.sys = user.isSys();
 		this.sys = user.isSys();
 		if (user.getRoles() != null && user.getRoles().size() > 0) {
 		if (user.getRoles() != null && user.getRoles().size() > 0) {
@@ -121,6 +119,8 @@ public class UserInfo {
 
 
 	private Long lastLoginTime;
 	private Long lastLoginTime;
 
 
+	private Set<UserLoginTime> userLoginTimeSet;
+
 	public Long getLastLoginTime() {
 	public Long getLastLoginTime() {
 		return lastLoginTime;
 		return lastLoginTime;
 	}
 	}
@@ -217,6 +217,14 @@ public class UserInfo {
 		this.role = role;
 		this.role = role;
 	}
 	}
 
 
+	public Set<UserLoginTime> getUserLoginTimeSet() {
+		return userLoginTimeSet;
+	}
+
+	public void setUserLoginTimeSet(Set<UserLoginTime> userLoginTimeSet) {
+		this.userLoginTimeSet = userLoginTimeSet;
+	}
+
 	public List<Map<String, Object>> getEnterprises() {
 	public List<Map<String, Object>> getEnterprises() {
 		return enterprises;
 		return enterprises;
 	}
 	}

+ 89 - 0
src/main/java/com/uas/platform/b2c/common/account/model/UserLoginTime.java

@@ -0,0 +1,89 @@
+package com.uas.platform.b2c.common.account.model;
+
+
+import org.hibernate.annotations.Cache;
+import org.hibernate.annotations.CacheConcurrencyStrategy;
+
+import javax.persistence.*;
+import java.io.Serializable;
+
+@Entity
+@Table(name = "sec$userslogintime")
+public class UserLoginTime implements Serializable{
+    /**
+     *
+     */
+    private static final long serialVersionUID = 1L;
+    /**
+     * ID
+     */
+    @Id
+    @GeneratedValue
+    @Column(name = "id")
+    private Long id;
+
+    /**
+     * uu号
+     */
+    @Column(name = "user_uu")
+    private Long userUU;
+
+    /**
+     * enuu
+     */
+    @Column(name = "enuu")
+    private Long enUU;
+
+    /**
+     * 信息
+     */
+    @OneToOne(cascade = { CascadeType.REFRESH }, fetch = FetchType.EAGER)
+    @JoinColumn(name = "enuu", insertable = false, updatable = false)
+    private Enterprise enterprise;
+
+    /**
+     * 登陆时间
+     */
+    @Column(name = "login_time")
+    private Long loginTime;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getUserUU() {
+        return userUU;
+    }
+
+    public void setUserUU(Long userUU) {
+        this.userUU = userUU;
+    }
+
+    public Long getEnUU() {
+        return enUU;
+    }
+
+    public void setEnUU(Long enUU) {
+        this.enUU = enUU;
+    }
+
+    public Long getLoginTime() {
+        return loginTime;
+    }
+
+    public void setLoginTime(Long loginTime) {
+        this.loginTime = loginTime;
+    }
+
+    public Enterprise getEnterprise() {
+        return enterprise;
+    }
+
+    public void setEnterprise(Enterprise enterprise) {
+        this.enterprise = enterprise;
+    }
+}