hulh 9 лет назад
Родитель
Сommit
f9a6098632

+ 13 - 0
src/main/java/com/uas/platform/b2c/prod/product/brand/api/BrandController.java

@@ -78,6 +78,19 @@ public class BrandController {
 		return brandService.getBrandInfoPage(info, keyword);
 	}
 
+	/**
+	 * 查找所有简单有效品牌信息,并按首字母过滤
+	 * @param keyword 关键词
+	 * @param params
+	 *            分页信息
+	 * @return 品牌简易信息
+	 */
+	@RequestMapping(value = "/page/initial", method = RequestMethod.GET)
+	public Page<BrandInfo> getBrankInfoPage(PageParams params, String keyword, String initial) {
+		PageInfo info = new PageInfo(params);
+		return brandService.getBrandInfoPage(info, keyword, initial);
+	}
+
 	/**
 	 * 根据uuid获取单个
 	 * 

+ 9 - 0
src/main/java/com/uas/platform/b2c/prod/product/brand/service/BrandService.java

@@ -62,6 +62,15 @@ public interface BrandService {
 	 */
 	public Page<BrandInfo> getBrandInfoPage(PageInfo pageInfo, String keyword);
 
+	/**
+	 * 获取BrandInfo分页数据
+	 * @param keyword 关键词
+	 * @param pageInfo 分页信息
+	 * @param initial 首字母
+	 * @return 品牌简易信息
+	 */
+	public Page<BrandInfo> getBrandInfoPage(PageInfo pageInfo, String keyword, String initial);
+
 	/**
 	 * 根据uuid获取单个品牌信息
 	 * @param uuid

+ 32 - 0
src/main/java/com/uas/platform/b2c/prod/product/brand/service/impl/BrandServiceImpl.java

@@ -20,6 +20,7 @@ import org.apache.commons.collections.CollectionUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Sort;
 import org.springframework.data.jpa.domain.Specification;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.stereotype.Service;
@@ -146,6 +147,37 @@ public class BrandServiceImpl implements BrandService {
 		}, pageInfo);
 	}
 
+	public Page<BrandInfo> getBrandInfoPage(final PageInfo pageInfo, String keyword, String inital){
+		if (StringUtils.hasText(keyword)) {
+			SimpleExpression[] simpleArrs = new SimpleExpression[2];
+			simpleArrs[0] = new SimpleExpression("nameCn", keyword, Operator.LIKE, true);
+			simpleArrs[1] = new SimpleExpression("nameEn", keyword, Operator.LIKE, true);
+			LogicalExpression logical1 = new LogicalExpression(simpleArrs, Operator.OR);
+			pageInfo.expression(logical1);
+		}
+		if (StringUtils.hasText(inital)){
+			if ("0~9".equals(inital)) {
+				String[] initals = new String[]{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"};
+				SimpleExpression[] numEx = new SimpleExpression[10];
+				for (int i = 0; i < 10; i++){
+					numEx[i] = new SimpleExpression("inital", initals[i], Operator.EQ, true);
+				}
+				LogicalExpression logical2 = new LogicalExpression(numEx, Operator.OR);
+				pageInfo.expression(logical2);
+			} else {
+				pageInfo.filter("inital", inital);
+			}
+		}
+		pageInfo.sorting(Sort.Direction.ASC, "nameEn");
+		return brandInfoDao.findAll(new Specification<BrandInfo>() {
+			@Override
+			public Predicate toPredicate(Root<BrandInfo> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
+				query.where(pageInfo.getPredicates(root, query, builder));
+				return null;
+			}
+		}, pageInfo);
+	}
+
 	@Override
 	public Brand findByUuid(String uuid) {
 		// 这个因为是接口错误的话直接返回

+ 8 - 2
src/main/webapp/resources/js/admin/controllers/product/brandMapCtrl.js

@@ -140,6 +140,8 @@ define(['app/app'], function(app) {
 
 		$scope.addOneMap = function () {
 			$scope.addFrame = !$scope.addFrame;
+			$scope.showStore = false;
+			$scope.showBrand = false;
 		};
 
 		$scope.cancelAdd = function () {
@@ -242,7 +244,10 @@ define(['app/app'], function(app) {
 				if ($scope.wordInBrand && $scope.wordInBrand.length > 0){
 					param.keyword = $scope.wordInBrand;
 				}
-				BrandActive.getSimpleInfoPage(param, function (page){
+				if ($scope.initialInBrand && $scope.initialInBrand.length > 0){
+					param.initial = $scope.initialInBrand;
+				}
+				BrandActive.getInfoPageWithInitial(param, function (page){
 					$scope.pageList = page.content;
 					params.total(page.totalElements);
 					$defer.resolve(page.content);
@@ -272,7 +277,7 @@ define(['app/app'], function(app) {
 		};
 
 		$scope.clickChar = function (item) {
-			$scope.wordInBrand = item;
+			$scope.initialInBrand = item;
 			reloadBrandData();
 		};
 
@@ -286,6 +291,7 @@ define(['app/app'], function(app) {
 		$scope.showStoreFrame = function () {
 			$scope.showStore = !$scope.showStore;
 		};
+
 		$scope.storeInfoTableParams = new ngTableParams({
 			page : 1,
 			count : 5

+ 5 - 0
src/main/webapp/resources/js/common/query/brand.js

@@ -94,6 +94,11 @@ define([ 'ngResource' ], function() {
 				url: 'api/product/brand/Info/ByPage',
 				method: 'GET'
 			},
+			// 分页获取简要信息
+			getInfoPageWithInitial: {
+				url: 'api/product/brand/page/initial',
+				method: 'GET'
+			},
 			// 验证品牌名是否存在
 			nameExist : {
 				url: 'produce/brand/nameExist',

+ 5 - 5
src/main/webapp/resources/view/admin/product/brand_map.html

@@ -206,13 +206,13 @@
                                     <input type="radio" name="type_radio">经销商
                                 </label>
                                 <div style="display: inline-flex;align-items: center;margin-left:5px;width:170px;height:21px;">
-                                    <input type="text" style="padding:0 20px 0 3px;" ng-model="wordInStore" ng-change="changeTextInStore(wordInStore)">
+                                    <input type="search" style="padding:0 20px 0 3px;" ng-model="wordInStore" ng-search="reloadStoreData()" ng-change="changeTextInStore(wordInStore)">
                                     <i class="fa fa-search" style="color:#fff;width:20px;height:20px;display:inline-block;margin-left:-20px;background: #2fa4e7;padding:3px;" ng-click="reloadStoreData()"></i>
                                 </div>
                                 <button ng-click="fitStoreInMap()" style="border:1px solid #2fa4e7;background: #2fa4e7;color:#fff;font-size: 12px;width:34px;height:24px;line-height: 24px;border-radius: 3px;margin:0 5px;">确定</button>
                                 <button ng-click="cancelFitStore()" style="border:1px solid #2fa4e7;background: #2fa4e7;color:#fff;font-size: 12px;width:34px;height:24px;line-height: 24px;border-radius: 3px;margin:0 5px;">取消</button>
                             </form>
-                            <table class="table table-striped table-condensed" ng-table="storeInfoTableParams">
+                            <table class="table table-striped table-condensed table-hover" ng-table="storeInfoTableParams">
                                 <thead>
                                 <tr style="background:#e9e9e9;">
                                     <th></th>
@@ -241,8 +241,8 @@
                         <input type="text" ng-click="showBrandFrame()" style="width:96px;height:29px;background:url('static/img/product/cart/up-map.png')no-repeat 80px 10px;padding-right:20px;" ng-model="brandMap.nameStandardCn" readonly="readonly">
                         <div class="mobile-select" ng-if="showBrand">
                             <div style="margin-bottom:10px;display: inline-flex;align-items: center">
-                                <input type="text" ng-model="wordInBrand" ng-change="changeTextInBrand(wordInBrand)" style="width:395px;height:20px;line-height:20px;padding:0 20px 0 10px;border:1px solid #2fa4e7;" placeholder="输入品牌中文/英文名称">
-                                <i ng-click="searchBrand()" class="fa fa-search" style="color:#fff;width:20px;height:20px;display:inline-block;margin-left:-20px;background: #2fa4e7;padding:3px;" ng-click="showStoreFrame()"></i>
+                                <input type="search" ng-model="wordInBrand" ng-search="searchBrand()" ng-change="changeTextInBrand(wordInBrand)" style="width:395px;height:20px;line-height:20px;padding:0 20px 0 10px;border:1px solid #2fa4e7;" placeholder="输入品牌中文/英文名称">
+                                <i ng-click="searchBrand()" class="fa fa-search" style="color:#fff;width:20px;height:20px;display:inline-block;margin-left:-20px;background: #2fa4e7;padding:3px;"></i>
                                 <button ng-click="fitBrandInMap()" style="border:1px solid #2fa4e7;background: #2fa4e7;color:#fff;font-size: 12px;width:34px;height:24px;line-height: 24px;border-radius: 3px;margin:0 5px 0 10px;">确定</button>
                                 <button ng-click="cancelFitBrand()" style="border:1px solid #2fa4e7;background: #2fa4e7;color:#fff;font-size: 12px;width:34px;height:24px;line-height: 24px;border-radius: 3px;margin:0 5px;">取消</button>
                             </div>
@@ -274,7 +274,7 @@
                                 <li><a ng-click="clickChar('X')">X</a></li>
                                 <li><a ng-click="clickChar('Y')">Y</a></li>
                                 <li><a ng-click="clickChar('Z')">Z</a></li>
-                                <!--<li><a href="#">0-9</a></li>-->
+                                <li><a ng-click="clickChar('0~9')">0-9</a></li>
                             </ul>
                             <table class="table table-condensed" ng-table="brandInfoTableParams">
                                 <tr ng-repeat="value in showList">