Browse Source

品牌增加初始化首字母方法。

wangyc 8 years ago
parent
commit
df3d9e8698

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

@@ -62,4 +62,13 @@ public class BrandController {
 	public List<Map<String, Object>> findCountIncreaseBrandByMonth() {
 		return brandService.findCountIncreaseBrandByMonth();
 	}
+
+	/**
+	 * 初始化首字母
+	 * @return
+	 */
+	@RequestMapping(value = "/init", method = RequestMethod.GET)
+	public String initBrandNameInital() {
+		return brandService.initBrandNameInital();
+	}
 }

+ 8 - 0
src/main/java/com/uas/platform/b2c/prod/product/brand/dao/BrandInfoDao.java

@@ -58,4 +58,12 @@ public interface BrandInfoDao extends JpaSpecificationExecutor<BrandInfo>, JpaRe
 	 */
 	@QueryHints({ @QueryHint(name = "org.hibernate.cacheable", value = "true") })
 	public List<BrandInfo> findByNameEn(String nameEn);
+
+	/**
+	 * 根据首字母获取品牌信息
+	 * @param initals
+	 * @return
+	 */
+	@Query(nativeQuery = true, value = "select * from product$brand where br_inital in :initals")
+	public List<BrandInfo> findInInitals(@Param("initals") String[] initals);
 }

+ 14 - 0
src/main/java/com/uas/platform/b2c/prod/product/brand/modal/Brand.java

@@ -140,6 +140,12 @@ public class Brand implements Serializable {
 	@Column(name = "br_version")
 	private Short version;
 
+	/**
+	 * 英文品牌名首字母
+	 */
+	@Column(name = "br_inital")
+	private String inital;
+
 	/**
 	 * 权重,可用于排序
 	 */
@@ -306,6 +312,14 @@ public class Brand implements Serializable {
 		this.version = version;
 	}
 
+	public String getInital() {
+		return inital;
+	}
+
+	public void setInital(String inital) {
+		this.inital = inital;
+	}
+
 	public Brand() {
 
 	}

+ 14 - 0
src/main/java/com/uas/platform/b2c/prod/product/brand/modal/BrandInfo.java

@@ -73,6 +73,12 @@ public class BrandInfo {
 	@Column(name = "br_createtime")
 	private Date createTime;
 
+	/**
+	 * 英文品牌名首字母
+	 */
+	@Column(name = "br_inital")
+	private String inital;
+
 	public Long getId() {
 		return id;
 	}
@@ -145,6 +151,14 @@ public class BrandInfo {
 		this.createTime = createTime;
 	}
 
+	public String getInital() {
+		return inital;
+	}
+
+	public void setInital(String inital) {
+		this.inital = inital;
+	}
+
 	public BrandInfo() {
 
 	}

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

@@ -19,6 +19,12 @@ public interface BrandService {
 	 */
 	public List<Brand> init(List<Brand> brands);
 
+	/**
+	 * 初始化首字母名
+	 * @return
+	 */
+	public String initBrandNameInital();
+
 	/**
 	 * 保存品牌
 	 * 

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

@@ -96,20 +96,20 @@ public class BrandServiceImpl implements BrandService {
 
 	@Override
 	public Map<String, List<BrandInfo>> getInitialSimpleInfo(String keyword) {
-		Map<String, List<BrandInfo>> brands = getInitialSimpleInfo();
 		Map<String, List<BrandInfo>> map = new HashMap<String, List<BrandInfo>>();
+		String[] initals = new String[]{"A", "B", "C"};
 		if ("0~9".equals(keyword)) {
-			map.put("0~9", brands.get("0~9"));
+			initals = new String[]{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"};
+			List<BrandInfo> brandInfos = brandInfoDao.findInInitals(initals);
+			map.put(keyword, brandInfos);
 			return map;
-		}
-		String[] arr = new String[3];
-		for (int i = 0; i < keyword.length(); i++) {
-			arr[i] = keyword.substring(i, i+1);
+		} else {
+			initals = keyword.split("");
 		}
 
-		for (String initial : arr) {
-			if (StringUtils.hasText(initial))
-				map.put(initial.toUpperCase(), brands.get(initial.toUpperCase()));
+		for (String inital : initals) {
+			List<BrandInfo> brandInfos = brandInfoDao.findInInitals(new String[]{inital});
+			map.put(inital.toUpperCase(), brandInfos);
 		}
 		return map;
 	}
@@ -290,4 +290,39 @@ public class BrandServiceImpl implements BrandService {
 		List<Map<String, Object>> map = jdbcTemplate.queryForList(sql);
 		return map;
 	}
+
+	@Override
+	public String initBrandNameInital() {
+		List<BrandInfo> brandInfos = brandInfoDao.findAll();
+		// 将品牌按首字母分组
+		for (BrandInfo brand : brandInfos) {
+			String initialName = "";
+			if (isChinese(brand.getNameEn())) {
+				initialName = PinyinUtils.chineseToPinyin(brand.getNameEn());
+			} else {
+				initialName = brand.getNameEn();
+			}
+			String initial = initialName.substring(0,1).toUpperCase();
+			brand.setInital(initial);
+			System.err.println("品牌名:" + brand.getNameEn() + " 首字母:" + initial);
+		}
+		brandInfoDao.save(brandInfos);
+
+//		// 将数字未为首字母的品牌挪到0~9分组中
+//		String reg="^\\d+$";
+//		List<BrandInfo> brandsInitialZero = new ArrayList<BrandInfo>();
+//		map.put("0~9",brandsInitialZero);
+//		List<String> removeInitial = new ArrayList<String>();
+//		Iterator iterator = map.keySet().iterator();
+//		while (iterator.hasNext()) {
+//			String value = String.valueOf(iterator.next());
+//			if (value.matches(reg)) {
+//				brandsInitialZero.addAll(map.get(value));
+//				iterator.remove();
+//				map.remove(value);
+//			}
+//		}
+//		return map;
+		return "success";
+	}
 }