Commit c72a788da62442a4e78e666388190d222a1784a2
1 parent
d8621149
新增描述功能(mongodb)
Showing
6 changed files
with
115 additions
and
86 deletions
titan-api/pom.xml
... | ... | @@ -90,6 +90,34 @@ |
90 | 90 | </build> |
91 | 91 | |
92 | 92 | <dependencies> |
93 | + <dependency> | |
94 | + <groupId>org.springframework.data</groupId> | |
95 | + <artifactId>spring-data-mongodb</artifactId> | |
96 | + <version>1.4.2.RELEASE</version> | |
97 | + <exclusions> | |
98 | + <exclusion> | |
99 | + <artifactId>spring-tx</artifactId> | |
100 | + <groupId>org.springframework</groupId> | |
101 | + </exclusion> | |
102 | + <exclusion> | |
103 | + <artifactId>spring-context</artifactId> | |
104 | + <groupId>org.springframework</groupId> | |
105 | + </exclusion> | |
106 | + <exclusion> | |
107 | + <artifactId>spring-beans</artifactId> | |
108 | + <groupId>org.springframework</groupId> | |
109 | + </exclusion> | |
110 | + <exclusion> | |
111 | + <artifactId>spring-core</artifactId> | |
112 | + <groupId>org.springframework</groupId> | |
113 | + </exclusion> | |
114 | + <exclusion> | |
115 | + <artifactId>spring-expression</artifactId> | |
116 | + <groupId>org.springframework</groupId> | |
117 | + </exclusion> | |
118 | + </exclusions> | |
119 | + </dependency> | |
120 | + | |
93 | 121 | <!-- spring --> |
94 | 122 | <dependency> |
95 | 123 | <groupId>org.springframework</groupId> |
... | ... | @@ -317,6 +345,11 @@ |
317 | 345 | <!--权限管理的redis配置--> |
318 | 346 | <manage.redis.url>10.28.11.205</manage.redis.url> |
319 | 347 | <manage.redis.port>6379</manage.redis.port> |
348 | + <!-- mongodb --> | |
349 | + <mongo.host>10.28.11.148</mongo.host> | |
350 | + <mongo.port>27017</mongo.port> | |
351 | + <mongo.username></mongo.username> | |
352 | + <mongo.pwd></mongo.pwd> | |
320 | 353 | </properties> |
321 | 354 | </profile> |
322 | 355 | </profiles> | ... | ... |
titan-api/src/main/java/com/diligrp/titan/rest/domain/output/ProductInfoOut.java
... | ... | @@ -85,6 +85,15 @@ public class ProductInfoOut { |
85 | 85 | */ |
86 | 86 | private List<String> pictures; |
87 | 87 | |
88 | + private String desc; | |
89 | + | |
90 | + public String getDesc() { | |
91 | + return desc; | |
92 | + } | |
93 | + | |
94 | + public void setDesc(String desc) { | |
95 | + this.desc = desc; | |
96 | + } | |
88 | 97 | |
89 | 98 | /** |
90 | 99 | * 创建时间 | ... | ... |
titan-api/src/main/java/com/diligrp/titan/ws/product/ProductRestService.java
... | ... | @@ -22,7 +22,7 @@ public interface ProductRestService { |
22 | 22 | * @createTime 2014年6月9日 下午2:09:41 |
23 | 23 | * @author celine |
24 | 24 | */ |
25 | - public Long insertPopProduct(PopProductInput input) throws TitanError; | |
25 | + Long insertPopProduct(PopProductInput input) throws TitanError; | |
26 | 26 | |
27 | 27 | |
28 | 28 | /** |
... | ... | @@ -35,7 +35,7 @@ public interface ProductRestService { |
35 | 35 | * @createTime 2015年3月30日 下午4:03:14 |
36 | 36 | * @author yangwd |
37 | 37 | */ |
38 | - public List<ProductInfoOut> getProductInfo(List<Long> pids, boolean isCludDeleteSku) throws TitanError; | |
38 | + List<ProductInfoOut> getProductInfo(List<Long> pids, boolean isCludDeleteSku) throws TitanError; | |
39 | 39 | |
40 | 40 | /** |
41 | 41 | * 分页获取所有第三方商品(搜索同步使用) |
... | ... | @@ -44,9 +44,9 @@ public interface ProductRestService { |
44 | 44 | * @param pageSize |
45 | 45 | * @return |
46 | 46 | */ |
47 | - public PageOutput<List<ProductInfoOut>> getAllProductPop(int page, int pageSize); | |
47 | + PageOutput<List<ProductInfoOut>> getAllProductPop(int page, int pageSize); | |
48 | 48 | |
49 | - public PageOutput<List<ProductInfoOut>> searchProductPop(int page, int pageSize, ProductInfoInput input); | |
49 | + PageOutput<List<ProductInfoOut>> searchProductPop(int page, int pageSize, ProductInfoInput input); | |
50 | 50 | |
51 | 51 | /** |
52 | 52 | * 批量获取sku信息 |
... | ... | @@ -54,7 +54,7 @@ public interface ProductRestService { |
54 | 54 | * @param skus 需要查询的sku |
55 | 55 | * @return 返回 key为sku 值为相应sku商品 |
56 | 56 | */ |
57 | - public Map<String, ProductInfoOut> getSkuInfoMap(List<String> skus); | |
57 | + Map<String, ProductInfoOut> getSkuInfoMap(List<String> skus); | |
58 | 58 | |
59 | 59 | /** |
60 | 60 | * this method is 删除第三方产品信息 |
... | ... | @@ -64,18 +64,9 @@ public interface ProductRestService { |
64 | 64 | * @createTime 2014年6月18日 下午2:57:51 |
65 | 65 | * @author yangjianjun |
66 | 66 | */ |
67 | - public void delProductInfo(List<Long> pids) throws TitanError; | |
67 | + void delProductInfo(List<Long> pids) throws TitanError; | |
68 | 68 | |
69 | 69 | |
70 | - /** | |
71 | - * 更新买卖对接商品 | |
72 | - * | |
73 | - * @param input 买卖对接商品信息 | |
74 | - * @return | |
75 | - * @throws TitanError | |
76 | - * @createTime 2014年6月20日 下午5:13:59 | |
77 | - */ | |
78 | - public Map<String, Boolean> updatePopProduct(PopProductInput input) throws TitanError; | |
79 | 70 | |
80 | 71 | /** |
81 | 72 | * this method is 更新第三方商品库的状态信息 |
... | ... | @@ -88,7 +79,7 @@ public interface ProductRestService { |
88 | 79 | * @createTime 2014年6月19日 上午11:18:27 |
89 | 80 | * @author yangjianjun |
90 | 81 | */ |
91 | - public int updatePopProductStatus(int status, List<Long> pids, long sellerId) throws TitanError; | |
82 | + int updatePopProductStatus(int status, List<Long> pids, long sellerId) throws TitanError; | |
92 | 83 | |
93 | 84 | /** |
94 | 85 | * this method is 自定义第三方商品的分类 |
... | ... | @@ -100,7 +91,7 @@ public interface ProductRestService { |
100 | 91 | * @createTime 2014年6月19日 下午2:14:32 |
101 | 92 | * @author yangjianjun |
102 | 93 | */ |
103 | - public int setProductVirtualCid(List<Long> pids, long vcid) throws TitanError; | |
94 | + int setProductVirtualCid(List<Long> pids, long vcid) throws TitanError; | |
104 | 95 | |
105 | 96 | |
106 | 97 | /** |
... | ... | @@ -110,7 +101,7 @@ public interface ProductRestService { |
110 | 101 | * @param num 获取数量 |
111 | 102 | * @return |
112 | 103 | */ |
113 | - public List<ProductInfoOut> listLatestProduct(Long shopId, Integer num); | |
104 | + List<ProductInfoOut> listLatestProduct(Long shopId, Integer num); | |
114 | 105 | |
115 | 106 | /** |
116 | 107 | * this method is 获取设置的商品搜索排序 |
... | ... | @@ -119,7 +110,7 @@ public interface ProductRestService { |
119 | 110 | * @createTime 2014年9月7日 下午3:36:14 |
120 | 111 | * @author chenzhiwei |
121 | 112 | */ |
122 | - public List<ProductSearchSortOut> getProductSearchSort(Long cid, Integer type); | |
113 | + List<ProductSearchSortOut> getProductSearchSort(Long cid, Integer type); | |
123 | 114 | |
124 | 115 | /** |
125 | 116 | * this method is 查询上架自定义类目下的商品总数 |
... | ... | @@ -130,7 +121,7 @@ public interface ProductRestService { |
130 | 121 | * @createTime 2014年6月19日 下午3:59:32 |
131 | 122 | * @author yangjianjun |
132 | 123 | */ |
133 | - public Long countVirtualCatProducts(long vcid) throws TitanError; | |
124 | + Long countVirtualCatProducts(long vcid) throws TitanError; | |
134 | 125 | |
135 | 126 | /** |
136 | 127 | * 获取商品描述信息 |
... | ... | @@ -141,7 +132,7 @@ public interface ProductRestService { |
141 | 132 | * @createTime 2015年3月31日 下午5:17:24 |
142 | 133 | * @author yangjianjun |
143 | 134 | */ |
144 | - public String getProductDesc(Long pid) throws TitanError; | |
135 | + String getProductDesc(Long pid) throws TitanError; | |
145 | 136 | |
146 | 137 | /** |
147 | 138 | * 设置商品描述信息 |
... | ... | @@ -152,7 +143,7 @@ public interface ProductRestService { |
152 | 143 | * @createTime 2015年3月31日 下午5:17:24 |
153 | 144 | * @author yangjianjun |
154 | 145 | */ |
155 | - public void setProductDesc(Long pid, String desc) throws TitanError; | |
146 | + void setProductDesc(Long pid, String desc) throws TitanError; | |
156 | 147 | |
157 | 148 | |
158 | 149 | /** |
... | ... | @@ -165,7 +156,7 @@ public interface ProductRestService { |
165 | 156 | * @createTime 2015年4月20日 下午8:20:32 |
166 | 157 | * @author yjj |
167 | 158 | */ |
168 | - public Map<Integer, String> getPopProductCategroyByShopId(Integer shopId, Integer pstatus) throws TitanError; | |
159 | + Map<Integer, String> getPopProductCategroyByShopId(Integer shopId, Integer pstatus) throws TitanError; | |
169 | 160 | |
170 | 161 | |
171 | 162 | /** |
... | ... | @@ -174,7 +165,7 @@ public interface ProductRestService { |
174 | 165 | * @param query |
175 | 166 | * @return |
176 | 167 | */ |
177 | - public int getProductPopCount(ProductPop query); | |
168 | + int getProductPopCount(ProductPop query); | |
178 | 169 | |
179 | 170 | /** |
180 | 171 | * 根据店铺ID获取商品数量 |
... | ... | @@ -182,7 +173,7 @@ public interface ProductRestService { |
182 | 173 | * @param shopId |
183 | 174 | * @return |
184 | 175 | */ |
185 | - public int getCountByShopId(Long shopId); | |
176 | + int getCountByShopId(Long shopId); | |
186 | 177 | |
187 | 178 | |
188 | 179 | /** | ... | ... |
titan-api/src/main/java/com/diligrp/titan/ws/product/impl/ProductRestServiceImpl.java
1 | 1 | package com.diligrp.titan.ws.product.impl; |
2 | 2 | |
3 | +import com.alibaba.fastjson.JSONObject; | |
3 | 4 | import com.diligrp.titan.common.ProductStatus; |
4 | 5 | import com.diligrp.titan.common.exception.TitanError; |
5 | 6 | import com.diligrp.titan.common.log.LogHelper; |
... | ... | @@ -32,6 +33,11 @@ import com.diligrp.titan.ws.product.pop.ProductPopRestService; |
32 | 33 | import com.diligrp.titan.ws.product.pop.ProductSkuPopRestService; |
33 | 34 | import org.apache.commons.collections.CollectionUtils; |
34 | 35 | import org.apache.commons.lang.StringUtils; |
36 | +import org.springframework.beans.factory.annotation.Autowired; | |
37 | +import org.springframework.data.mongodb.core.MongoTemplate; | |
38 | +import org.springframework.data.mongodb.core.query.Criteria; | |
39 | +import org.springframework.data.mongodb.core.query.Query; | |
40 | +import org.springframework.data.mongodb.core.query.Update; | |
35 | 41 | import org.springframework.stereotype.Service; |
36 | 42 | import org.springframework.transaction.annotation.Transactional; |
37 | 43 | |
... | ... | @@ -72,6 +78,9 @@ public class ProductRestServiceImpl implements ProductRestService { |
72 | 78 | @Resource |
73 | 79 | private AttributeRestService attributeRestService; |
74 | 80 | |
81 | + @Autowired | |
82 | + private MongoTemplate mongoTemplate; | |
83 | + | |
75 | 84 | @Override |
76 | 85 | @Transactional(rollbackFor = TitanError.class) |
77 | 86 | public Long insertPopProduct(PopProductInput productInput) throws TitanError { |
... | ... | @@ -88,7 +97,15 @@ public class ProductRestServiceImpl implements ProductRestService { |
88 | 97 | |
89 | 98 | |
90 | 99 | // 将商品描述写入hbase |
91 | - //productDescDao.putProductDesc(pid, keyWordsRPC.filterKeyWordsInfoByTag(productInput.getDesc(),"*")); | |
100 | + try { | |
101 | + JSONObject json = new JSONObject(); | |
102 | + json.put("id", pid); | |
103 | + json.put("content", productInput.getDesc()); | |
104 | + mongoTemplate.save(json, "content"); | |
105 | + | |
106 | + } catch (Exception e) { | |
107 | + e.printStackTrace(); | |
108 | + } | |
92 | 109 | // 生成属性列表 |
93 | 110 | List<ProductPopAttr> attrs = generateAttrs(productInput, pid); |
94 | 111 | productPopAttrRestService.batchInsert(attrs); |
... | ... | @@ -172,7 +189,14 @@ public class ProductRestServiceImpl implements ProductRestService { |
172 | 189 | Map<String, List<AttributeOut>> attrMap = productPopAttrRestService.findByPid(pid, popProductDb.getCateId()); |
173 | 190 | result.setSaleAtt(attrMap.get("saleAttrs")); |
174 | 191 | |
175 | - | |
192 | + try { | |
193 | + Query query = new Query(); | |
194 | + query.addCriteria(Criteria.where("id").is(pid)); | |
195 | + JSONObject object = mongoTemplate.findOne(query, JSONObject.class, "content"); | |
196 | + result.setDesc(object.getString("content")); | |
197 | + } catch (Exception e) { | |
198 | + e.printStackTrace(); | |
199 | + } | |
176 | 200 | //设置sku信息 |
177 | 201 | List<ProductSkuPop> skuList = productSkuPopRestService.findByPid(pid, isCludDeleteSku); |
178 | 202 | List<SkuOut> skus = CovertUtils.covertEntrtyList(skuList, SkuOut.class); |
... | ... | @@ -518,64 +542,6 @@ public class ProductRestServiceImpl implements ProductRestService { |
518 | 542 | productSearchSortRestService.deleteProductSearchSort(pids); |
519 | 543 | } |
520 | 544 | |
521 | - @Override | |
522 | - @Transactional(rollbackFor = TitanError.class) | |
523 | - public Map<String, Boolean> updatePopProduct(PopProductInput input) throws TitanError { | |
524 | - Map<String, Boolean> resultMap = new HashMap<String, Boolean>(); | |
525 | - boolean isWaitProduct = false; //强制下架后,用户重新修改的商品 | |
526 | - Long pid = input.getPid(); | |
527 | - if (pid == null) { | |
528 | - throw new TitanError(0, "商品PID为空,请检查输入参数"); | |
529 | - } | |
530 | - ProductPop condtion = new ProductPop(); | |
531 | - condtion.setPid(pid); | |
532 | - List<ProductPop> productInDb = productPopRestService.selectEntryList(condtion); | |
533 | - if (productInDb == null || productInDb.size() != 1) { | |
534 | - throw new TitanError(0, "商品" + pid + "不存在"); | |
535 | - } | |
536 | - try { | |
537 | - // 插入商品主表product_pop | |
538 | - ProductPop productPop = generateProduct(input); | |
539 | - productPop.setPid(pid); | |
540 | - // 根据商品原来的状体和新的商品信息,更新商品状态 | |
541 | - int status = productInDb.get(0).getStatus(); | |
542 | - // 商品在架状态,不允许修改上架时间和上架模式 | |
543 | - | |
544 | - | |
545 | - productPopRestService.updateByKey(productPop); | |
546 | - | |
547 | - | |
548 | - // 生成SKU更新product_pop | |
549 | - List<ProductSkuPop> skus = generateSku(input, productPop.getPid(), false); | |
550 | - List<ProductSkuPop> skuInDb = productSkuPopRestService.findByPid(pid); | |
551 | - updateSku(skus, skuInDb); | |
552 | - | |
553 | - // 将商品描述写入hbase | |
554 | - //productDescDao.putProductDesc(pid, keyWordsRPC.filterKeyWordsInfoByTag(input.getDesc(), "*")); | |
555 | - | |
556 | - // 生成属性列表 | |
557 | - List<ProductPopAttr> attrs = generateAttrs(input, pid); | |
558 | - productPopAttrRestService.deleteByPid(pid); | |
559 | - productPopAttrRestService.batchInsert(attrs); | |
560 | - // 生成图片列表 | |
561 | - List<ProductImg> imgs = generateImgs(input.getPictures(), pid); | |
562 | - productImgRestService.updateProductImg(pid, imgs); | |
563 | - | |
564 | - // 生成属性值列表 | |
565 | - List<ProductAttrValue> attrValues = generateAttrValues(input, pid); | |
566 | - productPopAttrValueRestService.deleteByPid(pid); | |
567 | - productPopAttrValueRestService.batchInsert(attrValues); | |
568 | - | |
569 | - | |
570 | - resultMap.put("isWaitProduct", isWaitProduct); | |
571 | - resultMap.put("updateSuccess", true); | |
572 | - return resultMap; | |
573 | - } catch (Exception e) { | |
574 | - LogHelper.error(LogTypeEnum.PRODUCT, e, "更新商品失败!{}", e.getMessage()); | |
575 | - throw new TitanError(500, "更新商品失败" + e.getMessage()); | |
576 | - } | |
577 | - } | |
578 | - | |
579 | 545 | /** |
580 | 546 | * 对比输入的SKU与数据库中的SKU,进行新增、更新、删除 |
581 | 547 | * |
... | ... | @@ -690,7 +656,7 @@ public class ProductRestServiceImpl implements ProductRestService { |
690 | 656 | List<Integer> cateId = productPopRestService.getPopProductCategroyByShopId(shopId, pstatus); |
691 | 657 | Map<Integer, String> map = null; |
692 | 658 | if (!CollectionUtils.isEmpty(cateId)) { |
693 | - map = new HashMap<Integer, String>(); | |
659 | + map = new HashMap<>(); | |
694 | 660 | for (Integer categroy : cateId) { |
695 | 661 | CategoryOut cateOut = categoryRestService.getCatrgoryInfo(categroy, false); |
696 | 662 | if (cateOut != null) { |
... | ... | @@ -746,6 +712,7 @@ public class ProductRestServiceImpl implements ProductRestService { |
746 | 712 | //修改详情 |
747 | 713 | if (StringUtils.isNotEmpty(input.getDesc())) { |
748 | 714 | // 将商品描述写入hbase |
715 | + mongoTemplate.updateFirst(new Query(Criteria.where("id").is(input.getPid())), Update.update("content", input.getDesc()), "content"); | |
749 | 716 | } |
750 | 717 | |
751 | 718 | resultMap.put("isWaitProduct", isWaitProduct); | ... | ... |
titan-api/src/main/resources/mongodb/spring-mongo.xml
0 → 100755
1 | +<?xml version="1.0" encoding="UTF-8"?> | |
2 | +<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | |
3 | + xmlns:mongo="http://www.springframework.org/schema/data/mongo" | |
4 | + xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/data/mongo http://www.springframework.org/schema/data/mongo/spring-mongo.xsd" | |
5 | + default-lazy-init="true"> | |
6 | + | |
7 | + <description>RPC配置文件</description> | |
8 | + | |
9 | + <mongo:mongo host="${mongo.host}" port="${mongo.port}"> | |
10 | + <mongo:options connections-per-host="8" | |
11 | + threads-allowed-to-block-for-connection-multiplier="4" | |
12 | + connect-timeout="1000" | |
13 | + max-wait-time="1500" | |
14 | + auto-connect-retry="true" | |
15 | + socket-keep-alive="true" | |
16 | + socket-timeout="1500" | |
17 | + slave-ok="true" | |
18 | + write-number="1" | |
19 | + write-timeout="0" | |
20 | + write-fsync="true"/> | |
21 | + </mongo:mongo> | |
22 | + | |
23 | + <mongo:db-factory dbname="titan" mongo-ref="mongo" password="${mongo.pwd}" username="${mongo.username}"/> | |
24 | + | |
25 | + <bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate"> | |
26 | + <constructor-arg name="mongoDbFactory" ref="mongoDbFactory"/> | |
27 | + </bean> | |
28 | +</beans> | |
0 | 29 | \ No newline at end of file | ... | ... |
titan-api/src/main/resources/spring-config.xml
... | ... | @@ -31,4 +31,5 @@ |
31 | 31 | <import resource="classpath*:spring-config-rpc.xml" /> |
32 | 32 | <import resource="classpath*:spring-config-redis.xml" /> |
33 | 33 | <import resource="classpath*:spring-redis-manager.xml" /> |
34 | + <import resource="mongodb/spring-mongo.xml" /> | |
34 | 35 | </beans> |
35 | 36 | \ No newline at end of file | ... | ... |