Commit c72a788da62442a4e78e666388190d222a1784a2

Authored by alexyang
1 parent d8621149

新增描述功能(mongodb)

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
... ...