Просмотр исходного кода

企业人员搜索更新方法,所有字段搜索采用模糊搜索

hejq 8 лет назад
Родитель
Сommit
1dffa92c7c

+ 18 - 6
src/main/java/com/uas/platform/b2b/controller/UserController.java

@@ -32,6 +32,7 @@ import org.springframework.web.bind.annotation.*;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpSession;
 import java.util.List;
+import java.util.Set;
 
 /**
  * 企业请求
@@ -56,14 +57,18 @@ public class UserController {
 	/**
 	 * 分页查看全部用户信息
 	 *
-	 * @param params
-	 * @param keyword
+	 * @param params 分页参数
+	 * @param keyword 关键词
 	 * @return
 	 */
 	@RequestMapping(method = RequestMethod.GET)
 	@ResponseBody
 	public SPage<User> getUsers(PageParams params, String keyword) {
-		logger.log("用户信息", "查看用户信息");
+	    if (null != keyword) {
+            logger.log("用户信息", "通过[" + keyword.trim() +"]搜索查看用户信息");
+        } else {
+            logger.log("用户信息", "查看所有用户信息");
+        }
 		PageInfo pageInfo = new PageInfo(params);
 		return userService.findByPageInfo(pageInfo, keyword);
 	}
@@ -71,19 +76,26 @@ public class UserController {
 	/**
 	 * 通过关键词查询用户信息
 	 * 
-	 * @param keyword
+	 * @param keyword 搜索词
 	 * @return
 	 */
 	@RequestMapping(value = "/info", method = RequestMethod.GET)
 	@ResponseBody
-	public List<User> getUsersByKeyword(String keyword) {
-		logger.log("用户信息", "查看用户信息");
+	public Set<User> getUsersByKeyword(String keyword) {
+		logger.log("用户信息", "通过[" + keyword.trim() +"]搜索查看用户信息");
 		return userService.findUsersByKeyWord(keyword.trim());
 	}
 
+	/**
+	 * 通过客户UU查询分配的用户
+	 *
+	 * @param custUu 客户UU
+	 * @return
+	 */
 	@RequestMapping(value = "/customer/{uu}", method = RequestMethod.POST)
 	@ResponseBody
 	public List<User> getUsersAndDistribute(@PathVariable("uu") Long custUu) {
+		logger.log("用户信息", "查询[" + custUu +"]客户分配信息");
 		return userService.findUserInfoDistribute(custUu);
 	}
 

+ 35 - 3
src/main/java/com/uas/platform/b2b/dao/UserDao.java

@@ -45,7 +45,7 @@ public interface UserDao extends JpaSpecificationExecutor<User>, JpaRepository<U
 	 * @return
 	 */
 	@QueryHints({ @QueryHint(name = "org.hibernate.cacheable", value = "true") })
-	@Query("select u from User u inner join u.enterprises as e where e.uu = :enUU and u.userEmail = :userEmail")
+	@Query("select u from User u inner join u.enterprises as e where e.uu = :enUU and u.userEmail like %:userEmail%")
 	public List<User> findUserByUserEmailAndEnUU(@Param("userEmail") String userEmail, @Param("enUU") Long enUU);
 
 	/**
@@ -56,7 +56,7 @@ public interface UserDao extends JpaSpecificationExecutor<User>, JpaRepository<U
 	 * @return
 	 */
 	@QueryHints({ @QueryHint(name = "org.hibernate.cacheable", value = "true") })
-	@Query("select u from User u inner join u.enterprises as e where e.uu = :enUU and u.userTel = :userTel")
+	@Query("select u from User u inner join u.enterprises as e where e.uu = :enUU and u.userTel like %:userTel%")
 	public List<User> findUserByUserTelAndEnUU(@Param("userTel") String userTel, @Param("enUU") Long enUU);
 
 	/**
@@ -67,7 +67,7 @@ public interface UserDao extends JpaSpecificationExecutor<User>, JpaRepository<U
 	 * @return
 	 */
 	@QueryHints({ @QueryHint(name = "org.hibernate.cacheable", value = "true") })
-	@Query("select u from User u inner join u.enterprises as e where e.uu = :enUU and u.userUU = :userUU")
+	@Query("select u from User u inner join u.enterprises as e where e.uu = :enUU and u.userUU like %:userUU%")
 	public List<User> findByEnUUAndUserUU(@Param("enUU") long enUU, @Param("userUU") long userUU);
 
 	/**
@@ -149,4 +149,36 @@ public interface UserDao extends JpaSpecificationExecutor<User>, JpaRepository<U
 	@Query(value = "select u from User u inner join u.enterprises as e where e.uu = :enUU and u.userUU = :userUU",
 			countQuery = "select count(1) from User u inner join u.enterprises as e where e.uu = :enUU and u.userUU = :userUU")
 	public Page<User> findByEnUUAndUserUU(@Param("enUU") long enUU, @Param("userUU") long userUU, Pageable page);
+
+	/**
+	 * 按企业ID和个人ID查找个人
+	 *
+	 * @author hejq
+	 * @date 2018-01-16 17:09
+	 * @param enUU 企业UU
+	 * @param keyword 关键词
+	 * @return
+	 */
+	@QueryHints({ @QueryHint(name = "org.hibernate.cacheable", value = "true") })
+	@Query(value = "select u from User u inner join u.enterprises as e where e.uu = :enUU and " +
+			"(u.userName like %:keyword% or u.userTel like %:keyword% or u.userEmail like %:keyword%)",
+			countQuery = "select count(1) from User u inner join u.enterprises as e where e.uu = :enUU and " +
+					"(u.userName like %:keyword% or u.userTel like %:keyword% or u.userEmail like %:keyword%)")
+	public Page<User> findByEnUUAndKeyword(@Param("enUU") long enUU, @Param("keyword") String keyword, Pageable page);
+
+    /**
+     * 按企业ID和个人ID查找个人
+     *
+     * @author hejq
+     * @date 2018-01-16 17:09
+     * @param enUU 企业UU
+     * @param keyword 关键词
+     * @return
+     */
+    @QueryHints({ @QueryHint(name = "org.hibernate.cacheable", value = "true") })
+    @Query(value = "select u from User u inner join u.enterprises as e where e.uu = :enUU and " +
+            "(u.userUU like :useruu or u.userName like %:keyword% or u.userTel like %:keyword% or u.userEmail like %:keyword%)",
+            countQuery = "select count(1) from User u inner join u.enterprises as e where e.uu = :enUU and " +
+                    "(u.userUU like :useruu or u.userName like %:keyword% or u.userTel like %:keyword% or u.userEmail like %:keyword%)")
+    public Page<User> findByEnUUAndKeyword(@Param("enUU") long enUU, @Param("keyword") String keyword, @Param("useruu") Long useruu, Pageable page);
 }

+ 8 - 4
src/main/java/com/uas/platform/b2b/service/UserService.java

@@ -6,6 +6,7 @@ import com.uas.search.b2b.model.SPage;
 
 import javax.servlet.http.HttpServletRequest;
 import java.util.List;
+import java.util.Set;
 
 /**
  * @since 2016-9-26 21:18:35 账户中心统一管理;部分功能保留,但转移到v2目录
@@ -305,10 +306,13 @@ public interface UserService {
 	/**
 	 * 按关键词查询用户信息
 	 * 
-	 * @param keyword
+	 * @param keyword 搜索词
 	 * @return
+	 * @modify-author hejq
+	 * @modify-date 2018-01-16 16:55
+	 * @modify-desc 更新用户搜索方法,全部采用模糊搜索
 	 */
-	List<User> findUsersByKeyWord(String keyword);
+	Set<User> findUsersByKeyWord(String keyword);
 
 	/**
 	 * 当前登录用户,是否被转移当前客户权限
@@ -329,8 +333,8 @@ public interface UserService {
 	/**
 	 * 分页查询用户信息
 	 *
-	 * @param pageInfo
-	 * @param keyword
+	 * @param pageInfo 分页信息
+	 * @param keyword 关键词
 	 * @return
 	 */
 	SPage<User> findByPageInfo(PageInfo pageInfo, String keyword);

+ 32 - 22
src/main/java/com/uas/platform/b2b/service/impl/UserServiceImpl.java

@@ -55,10 +55,12 @@ public class UserServiceImpl implements UserService {
 	private MailService mailService;
 	@Autowired
 	private MessageConf messageConf;
+
 	static final String TEL_REGEXP = "^((\\(\\d{3}\\))|(\\d{3}\\-))?(13|15|18|17)\\d{9}$";
 
 	static final String UU_REGEXP = "^\\d{4,}$";
 
+	static final String NUM_REGEXP= "^[0-9]*$";
 	/**
 	 * 匹配中文正则式
 	 */
@@ -357,19 +359,13 @@ public class UserServiceImpl implements UserService {
 	private Page<User> getUsersByPage(final PageInfo pageInfo, String keyword) {
 		Long enuu = SystemSession.getUser().getEnterprise().getUu();
 		if(StringUtils.hasText(keyword)) {
-			if (keyword.contains("@")) { // 按邮箱查找
-				return userDao.findUserByUserEmailAndEnUU(keyword.trim(), enuu, pageInfo);
-			} else if (keyword.matches(TEL_REGEXP)) { // 按手机号查找
-				return userDao.findUserByUserTelAndEnUU(keyword.trim(), enuu, pageInfo);
-			} else if (keyword.matches(UU_REGEXP)) { // 按UU号查找
-				return userDao.findByEnUUAndUserUU(enuu, Long.parseLong(keyword.trim()), pageInfo);
-			} else if (!keyword.contains("@") && (keyword.matches(CHINESE_REGEXP) || keyword.matches(ENGLISH_REGEXP))) {// 按名字查找
-				return userDao.findUserByUserNameAndEnUU(keyword.trim(), enuu, pageInfo);
-			}
+		    if (keyword.matches(NUM_REGEXP)) {
+                return userDao.findByEnUUAndKeyword(enuu, keyword.trim(), Long.valueOf(keyword.trim()), pageInfo);
+            }
+            return userDao.findByEnUUAndKeyword(enuu, keyword.trim(), pageInfo);
 		} else {
 			return userDao.findEnUUByAndPage(enuu, pageInfo);
 		}
-		return null;
 	}
 
 
@@ -647,20 +643,34 @@ public class UserServiceImpl implements UserService {
 		return simpleUser;
 	}
 
+	/**
+	 * 按关键词查询用户信息
+	 *
+	 * @param keyword 搜索词
+	 * @return
+	 * @modify-author hejq
+	 * @modify-date 2018-01-16 16:55
+	 * @modify-desc 更新用户搜索方法,全部采用模糊搜索
+	 */
 	@Override
-	public List<User> findUsersByKeyWord(String keyword) {
+	public Set<User> findUsersByKeyWord(String keyword) {
 		List<User> users = new ArrayList<User>();
+		Set<User> userSet = new HashSet<User>();
 		Long enUU = SystemSession.getUser().getEnterprise().getUu();
-		if (keyword.contains("@")) { // 按邮箱查找
-			users = userDao.findUserByUserEmailAndEnUU(keyword, enUU);
-		} else if (keyword.matches(TEL_REGEXP)) { // 按手机号查找
-			users = userDao.findUserByUserTelAndEnUU(keyword, enUU);
-		} else if (keyword.matches(UU_REGEXP)) { // 按UU号查找
-			users = userDao.findByEnUUAndUserUU(enUU, Long.parseLong(keyword));
-		} else if (!keyword.contains("@") && (keyword.matches(CHINESE_REGEXP) || keyword.matches(ENGLISH_REGEXP))) {// 按名字查找
-			users = userDao.findUserByUserNameAndEnUU(keyword, enUU);
-		}
-		if (!CollectionUtils.isEmpty(users)) {
+//		if (keyword.contains("@")) { // 按邮箱查找
+//			users = userDao.findUserByUserEmailAndEnUU(keyword, enUU);
+//		} else if (keyword.matches(TEL_REGEXP)) { // 按手机号查找
+//			users = userDao.findUserByUserTelAndEnUU(keyword, enUU);
+//		} else if (keyword.matches(UU_REGEXP)) { // 按UU号查找
+//			users = userDao.findByEnUUAndUserUU(enUU, Long.parseLong(keyword));
+//		} else if (!keyword.contains("@") && (keyword.matches(CHINESE_REGEXP) || keyword.matches(ENGLISH_REGEXP))) {// 按名字查找
+//			users = userDao.findUserByUserNameAndEnUU(keyword, enUU);
+//		}
+		userSet.addAll(userDao.findUserByUserEmailAndEnUU(keyword, enUU));
+		userSet.addAll(userDao.findUserByUserTelAndEnUU(keyword, enUU));
+		userSet.addAll(userDao.findByEnUUAndUserUU(enUU, Long.parseLong(keyword)));
+		userSet.addAll(userDao.findUserByUserNameAndEnUU(keyword, enUU));
+		if (!CollectionUtils.isEmpty(userSet)) {
 			for (User user : users) {
 				Set<Role> roles = user.getRoles();
 				Long enuu = SystemSession.getUser().getEnterprise().getUu();
@@ -675,7 +685,7 @@ public class UserServiceImpl implements UserService {
 				}
 			}
 		}
-		return users;
+		return userSet;
 	}
 
 	@Override