Browse Source

用户基本信息增加分页搜索功能

hejq 7 years ago
parent
commit
6df285719c

+ 14 - 0
src/main/java/com/uas/platform/b2b/controller/VendorDistributeController.java

@@ -6,7 +6,9 @@ import com.uas.platform.b2b.result.ResultMap;
 import com.uas.platform.b2b.service.VendorService;
 import com.uas.platform.b2b.support.UsageBufferedLogger;
 import com.uas.platform.core.logging.BufferedLoggerManager;
+import com.uas.platform.core.model.PageParams;
 import com.uas.platform.core.util.serializer.FlexJsonUtils;
+import com.uas.search.b2b.model.SPage;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -74,4 +76,16 @@ public class VendorDistributeController {
         LOGGER.log("用户信息", "查询[" + id +"]供应商分配信息");
         return vendorService.findUserInfoVendDistribute(id);
     }
+
+    /**
+     * 通过分页参数和关键词查询用户信息
+     *
+     * @param params 分页参数
+     * @param keyword 搜索关键词
+     * @return 符合条件的数据
+     */
+    @RequestMapping(value = "/user", method = RequestMethod.GET)
+    public SPage<UserBaseInfo> findByPageInfo(PageParams params, String keyword) {
+        return vendorService.findUserInfoByPage(params, keyword);
+    }
 }

+ 50 - 0
src/main/java/com/uas/platform/b2b/dao/UserBaseInfoDao.java

@@ -2,6 +2,9 @@ package com.uas.platform.b2b.dao;
 
 import java.util.List;
 
+import com.uas.platform.b2b.model.User;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.data.jpa.repository.Query;
@@ -41,4 +44,51 @@ public interface UserBaseInfoDao extends JpaSpecificationExecutor<UserBaseInfo>,
      */
     @Query(value = "select u.* from sec$users u inner join sec$userenterprise as e on u.user_uu = e.user_uu where e.en_uu = :enUU", nativeQuery = true)
     List<UserBaseInfo> findByEnUU(@Param("enUU") long enUU);
+
+    /**
+     * 通过企业UU过滤和搜索词分页搜索用户基本信息
+     *
+     * @param enUU 企业UU
+     * @param keyword 关键词
+     * @param pageNumber 页码
+     * @param pageSize 分页大小
+     * @return 搜索结果
+     */
+    @Query(value = "select u.* from sec$users u inner join sec$userenterprise as e on e.user_uu = u.user_uu " +
+        "where e.en_uu = :enUU and (u.user_name like %:keyword% or u.user_tel like %:keyword%) limit :pageNumber, :pageSize", nativeQuery = true)
+    List<UserBaseInfo> findByEnUUAndKeyword(@Param("enUU") long enUU, @Param("keyword") String keyword,
+                                            @Param("pageNumber") int pageNumber, @Param("pageSize") int pageSize);
+
+    /**
+     * 通过企业UU过滤用户基本信息
+     *
+     * @param enUU 企业UU
+     * @param pageNumber 页码
+     * @param pageSize 分页大小
+     * @return 搜索结果
+     */
+    @Query(value = "select u.* from sec$users u inner join sec$userenterprise as e on e.user_uu = u.user_uu " +
+        "where e.en_uu = :enUU limit :pageNumber, :pageSize", nativeQuery = true)
+    List<UserBaseInfo> findByEnUU(@Param("enUU") long enUU, @Param("pageNumber") int pageNumber, @Param("pageSize") int pageSize);
+
+    /**
+     * 通过企业UU过滤和搜索词统计总数
+     *
+     * @param enUU 企业UU
+     * @param keyword 关键词
+     * @return 数量
+     */
+    @Query(value = "select count(1) from sec$users u inner join sec$userenterprise as e on e.user_uu = u.user_uu " +
+        "where e.en_uu = :enUU and (u.user_name like %:keyword% or u.user_tel like %:keyword%)", nativeQuery = true)
+    Integer countByEnUUAndKeyword(@Param("enUU") long enUU, @Param("keyword") String keyword);
+
+    /**
+     * 通过企业UU统计总数
+     *
+     * @param enUU 企业UU
+     * @return 数量
+     */
+    @Query(value = "select count(1) from sec$users u inner join sec$userenterprise as e on e.user_uu = u.user_uu " +
+        "where e.en_uu = :enUU", nativeQuery = true)
+    Integer countByEnUU(@Param("enUU") long enUU);
 }

+ 9 - 0
src/main/java/com/uas/platform/b2b/service/VendorService.java

@@ -210,4 +210,13 @@ public interface VendorService {
      * @throws IllegalAccessException
      */
     List<UserBaseInfo> findUserInfoVendDistribute(Long vendUU) throws IllegalAccessException;
+
+    /**
+     * 通过分页信息和关键词查询用户信息
+     *
+     * @param params 分页参数
+     * @param keyword 关键词
+     * @return 符合条件的数据
+     */
+    SPage<UserBaseInfo> findUserInfoByPage(PageParams params, String keyword);
 }

+ 26 - 0
src/main/java/com/uas/platform/b2b/service/impl/VendorsServiceImpl.java

@@ -26,6 +26,7 @@ import com.uas.platform.b2b.search.SearchService;
 import com.uas.platform.b2b.service.UserService;
 import com.uas.platform.b2b.service.VendorService;
 import com.uas.platform.b2b.support.CollectionUtil;
+import com.uas.platform.b2b.support.SPageUtils;
 import com.uas.platform.b2b.support.SystemSession;
 import com.uas.platform.core.model.Constant;
 import com.uas.platform.core.model.PageInfo;
@@ -37,6 +38,7 @@ import com.uas.search.b2b.model.Sort;
 import com.uas.search.b2b.util.SearchConstants;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageImpl;
 import org.springframework.stereotype.Service;
 import org.springframework.ui.ModelMap;
 import org.springframework.util.CollectionUtils;
@@ -678,4 +680,28 @@ public class VendorsServiceImpl implements VendorService {
         });
         return users;
     }
+
+    /**
+     * 通过分页信息和关键词查询用户信息
+     *
+     * @param params  分页参数
+     * @param keyword 关键词
+     * @return 符合条件的数据
+     */
+    @Override
+    public SPage<UserBaseInfo> findUserInfoByPage(PageParams params, String keyword) {
+        Long enUU = SystemSession.getUser().getEnterprise().getUu();
+        PageInfo pageInfo = new PageInfo(params);
+        List<UserBaseInfo> userList;
+        Integer total;
+        Integer startIndex = (pageInfo.getPageNumber() - 1) * pageInfo.getPageSize();
+        if (StringUtils.isEmpty(keyword)) {
+            userList = userBaseInfoDao.findByEnUU(enUU, startIndex, pageInfo.getPageSize());
+            total = userBaseInfoDao.countByEnUU(enUU);
+        } else {
+            userList = userBaseInfoDao.findByEnUUAndKeyword(enUU, keyword, startIndex, pageInfo.getPageSize());
+            total = userBaseInfoDao.countByEnUUAndKeyword(enUU, keyword);
+        }
+        return SPageUtils.covertSPage(new PageImpl<>(userList, pageInfo, total));
+    }
 }