Explorar o código

Merge branch '#5_store_recommends' into dev

huxz %!s(int64=8) %!d(string=hai) anos
pai
achega
3be4a8c1d1

+ 10 - 0
src/main/java/com/uas/platform/b2c/advertise/ad/api/StoreRecommendController.java

@@ -5,6 +5,7 @@ import com.uas.platform.b2c.advertise.ad.service.RecommendProductService;
 import com.uas.platform.b2c.core.utils.JacksonUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RestController;
@@ -43,6 +44,15 @@ public class StoreRecommendController {
 		return recommendProductService.findProductsWhenUserVisitStore(uuid);
 	}
 
+	/**
+	 * 当卖家新增或修改产品推荐时,创建或更新产品推荐信息
+	 */
+	@RequestMapping(method = RequestMethod.POST, value = "/products//update_batch")
+	public List<RecommendProduct> saveProductsWhenSellerUpdate(String uuid,
+   			@RequestBody List<RecommendProduct> productList) {
+		return recommendProductService.saveProductsWhenSellerUpdate(uuid, productList);
+	}
+
 	@RequestMapping(value = "/products/{uuid}", method = RequestMethod.DELETE)
 	public String deleteProductsWhenUserVisitStore(@PathVariable("uuid") String uuid, String batchCode) {
 		Map<String, String> map = new HashMap<>();

+ 8 - 0
src/main/java/com/uas/platform/b2c/advertise/ad/service/RecommendProductService.java

@@ -29,4 +29,12 @@ public interface RecommendProductService {
 	 * @return the string
 	 */
 	List<RecommendProduct> findProductsWhenUserVisitStore(String uuid);
+
+	/**
+	 * 当卖家新增或修改产品推荐时,创建或更新产品推荐信息
+	 *
+	 * @param uuid			店铺UUID
+	 * @param productList	推荐产品列表
+	 */
+	List<RecommendProduct> saveProductsWhenSellerUpdate(String uuid, List<RecommendProduct> productList);
 }

+ 48 - 3
src/main/java/com/uas/platform/b2c/advertise/ad/service/impl/RecommendProductServiceImpl.java

@@ -4,10 +4,12 @@ import com.uas.platform.b2c.advertise.ad.model.Message;
 import com.uas.platform.b2c.advertise.ad.model.RecommendProduct;
 import com.uas.platform.b2c.advertise.ad.service.RecommendProductService;
 import com.uas.platform.b2c.advertise.ad.utils.RecommendProductsUtils;
+import com.uas.platform.b2c.core.config.MicroServicesConfMulti;
 import com.uas.platform.b2c.core.utils.JacksonUtils;
 import com.uas.platform.b2c.prod.commodity.dao.GoodsDao;
 import com.uas.platform.b2c.prod.commodity.model.Goods;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.kafka.core.KafkaTemplate;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
@@ -30,17 +32,23 @@ import java.util.Set;
 @Service
 public class RecommendProductServiceImpl implements RecommendProductService {
 
+	@Value("#{sys.profile}")
+	private String profile;
+
 	private final RestTemplate restTemplate;
 
 	private final GoodsDao goodsDao;
 
 	private final KafkaTemplate<String, String> kafkaTemplate;
 
+	private final MicroServicesConfMulti conf;
+
 	@Autowired
-	public RecommendProductServiceImpl(RestTemplate restTemplate, GoodsDao goodsDao, KafkaTemplate<String, String> kafkaTemplate) {
+	public RecommendProductServiceImpl(RestTemplate restTemplate, GoodsDao goodsDao, KafkaTemplate<String, String> kafkaTemplate, MicroServicesConfMulti conf) {
 		this.restTemplate = restTemplate;
 		this.goodsDao = goodsDao;
 		this.kafkaTemplate = kafkaTemplate;
+		this.conf = conf;
 	}
 
 	@Override
@@ -49,6 +57,10 @@ public class RecommendProductServiceImpl implements RecommendProductService {
 			return;
 		}
 
+		if (StringUtils.isEmpty(profile)) {
+			throw new IllegalStateException("无法获取配置文件属性值");
+		}
+
 		Date date = new Date();
 
 		Message message = new Message();
@@ -58,14 +70,17 @@ public class RecommendProductServiceImpl implements RecommendProductService {
 		message.setBatchCodes(batchCodes);
 		System.out.println(JacksonUtils.toJson(message));
 
-		kafkaTemplate.send("recommend-products-delete", "batchCode", JacksonUtils.toJson(message));
+		String topic = "recommend-products-delete" + "-" + profile;
+
+		kafkaTemplate.send(topic, "batchCode", JacksonUtils.toJson(message));
 	}
 
 	@Override
 	public List<RecommendProduct> findProductsWhenUserVisitStore(String uuid) {
 		Map<String, String> map = new HashMap<>();
 		map.put("uuid", uuid);
-		String content = restTemplate.getForObject("http://api.ubtob.com/api/recommend/products?condition=store_uuid&uuid={uuid}", String.class, map);
+		String url = conf.getRequestUrl(20100, "/api/recommend/products?condition=store_uuid&uuid={uuid}");
+		String content = restTemplate.getForObject(url, String.class, map);
 		if (StringUtils.isEmpty(content)) {
 			return Collections.emptyList();
 		}
@@ -80,4 +95,34 @@ public class RecommendProductServiceImpl implements RecommendProductService {
 		}
 		return recommendProducts;
 	}
+
+	@Override
+	public List<RecommendProduct> saveProductsWhenSellerUpdate(String uuid, List<RecommendProduct> productList) {
+		if (StringUtils.isEmpty(uuid)) {
+			return Collections.emptyList();
+		}
+
+		if (CollectionUtils.isEmpty(productList)) {
+			productList = Collections.emptyList();
+		}
+
+		String url = conf.getRequestUrl(20100, "/api/recommend/products?uuid=" + uuid);
+
+		String content;
+		try {
+			content = restTemplate.postForObject(url, productList, String.class);
+		} catch (Exception e) {
+			content = "[]";
+		}
+
+		List<RecommendProduct> recommendProducts = JacksonUtils.fromJsonArray(content, RecommendProduct.class);
+
+		for (RecommendProduct product : recommendProducts) {
+			Goods commodity = goodsDao.findByBatchCode(product.getBatchCode());
+			if (commodity != null) {
+				RecommendProductsUtils.fillCommodityInfo(product, commodity);
+			}
+		}
+		return recommendProducts;
+	}
 }

+ 34 - 0
src/main/java/com/uas/platform/b2c/core/config/MicroServicesConfMulti.java

@@ -0,0 +1,34 @@
+package com.uas.platform.b2c.core.config;
+
+import com.uas.platform.core.model.PageParams;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+/**
+ * 微服务相关配置
+ */
+@Component
+public class MicroServicesConfMulti {
+
+	/**
+	 * 微服务Docker swarm的主机地址
+	 */
+	@Value("#{sys.endpointUri ?: '10.10.101.23'}")
+	private String microServiceIp;
+
+	public String getMicroServiceIp() {
+		return microServiceIp;
+	}
+
+	public void setMicroServiceIp(String microServiceIp) {
+		this.microServiceIp = microServiceIp;
+	}
+
+	public String getRequestUrl(int port, String requestUrl) {
+		return String.format("http://%s:%d%s", this.microServiceIp, port, requestUrl);
+	}
+
+	public String getRequestUrl(int port, String requestUrl, PageParams pageable) {
+		return String.format("http://%s:%d%s%s", this.microServiceIp, port, requestUrl, "&count=" + pageable.getCount() + "&page=" + pageable.getPage() + "&filter=" + pageable.getFilter());
+	}
+}

+ 1 - 0
src/main/resources/dev/sys.properties

@@ -23,6 +23,7 @@ reportPrintUrl=http://print.ubtob.com/report/print?userName=B2C&profile=${profil
 reportUploadUrl=http://print.ubtob.com/report/fileUpload?userName=B2C
 # micro service IP(Swarm Manager IP)
 microServiceIp=10.10.101.23
+endpointUri=10.10.101.23
 
 # Kafka
 kafka-bootstrap-servers=10.10.100.11:9292,10.10.100.12:9292,10.10.100.13:9292,10.10.100.14:9292,10.10.100.15:9292,10.10.100.16:9292

+ 1 - 0
src/main/resources/prod/sys.properties

@@ -24,6 +24,7 @@ reportPrintUrl=http://print.ubtob.com/report/print?userName=B2C&profile=${profil
 reportUploadUrl=http://print.ubtob.com/report/fileUpload?userName=B2C
 # micro service IP(Swarm Manager IP)
 microServiceIp=10.10.100.23
+endpointUri=10.10.100.23
 
 # Kafka
 kafka-bootstrap-servers=10.10.100.11:9292,10.10.100.12:9292,10.10.100.13:9292,10.10.100.14:9292,10.10.100.15:9292,10.10.100.16:9292

+ 1 - 0
src/main/resources/test/sys.properties

@@ -23,6 +23,7 @@ reportPrintUrl=http://print.ubtob.com/report/print?userName=B2C&profile=${profil
 reportUploadUrl=http://print.ubtob.com/report/fileUpload?userName=B2C
 # micro service IP(Swarm Manager IP)
 microServiceIp=10.10.101.23
+endpointUri=10.10.101.23
 
 # Kafka
 kafka-bootstrap-servers=10.10.100.11:9292,10.10.100.12:9292,10.10.100.13:9292,10.10.100.14:9292,10.10.100.15:9292,10.10.100.16:9292

+ 1 - 1
src/main/webapp/resources/js/common/module/store_recommend_product.js

@@ -39,7 +39,7 @@ define([ 'ngResource', 'common/query/commodity' ], function() {
 			 * @param uuid
 			 */
 			saveProductsWhenSellerUpdate: {
-				url: address + 'api/recommend/products',
+				url: 'api/store/recommend/products//update_batch',
 				method: 'POST',
 				isArray: true
 			},