Quellcode durchsuchen

Merge remote-tracking branch 'origin/dev-mysql' into dev-mysql

hulh vor 8 Jahren
Ursprung
Commit
44309b5d74

+ 5 - 0
src/main/java/com/uas/platform/b2c/common/search/constant/SearchUrl.java

@@ -104,6 +104,11 @@ public class SearchUrl {
      */
     public static final String GOODIS_URL= "/search/goodsIds?keyword={keyword}&params={params}";
 
+    /**
+     * 搜索库存信息(类目)
+     */
+    public static final String GOODIS_URL_KIND= "/search/goodsIds?params={params}";
+
 
     /**
      * 搜索库存

+ 18 - 0
src/main/java/com/uas/platform/b2c/common/search/rpc/service/Impl/SearchServiceImpl.java

@@ -363,6 +363,24 @@ public class SearchServiceImpl implements SearchService{
         }
     }
 
+    @Override
+    public Map<String, Object> getGoodsIdsForKinds(PageParams var2) throws SearchException {
+        Map<String, Object> map = new HashedMap();
+        map.put("params", FlexJsonUtils.toJsonDeep(var2));
+        String str = restTemplate.getForObject(sysConf.getSearchUrl() + SearchUrl.GOODIS_URL_KIND, String.class, map);
+        if(StringUtils.isEmpty(str)) {
+            return null;
+        }else {
+            try {
+                Map<String, Object> reMap = FastjsonUtils.fromJson(str, Map.class);
+                return reMap;
+            }catch (Exception e) {
+                e.printStackTrace();
+                return null;
+            }
+        }
+    }
+
     @Override
     public List<Map<String, Object>> collectBySearchGoods(String keyword, CollectField collectField, Map<PageParams.FilterField, Object> filters) {
         Map<String, Object> map = new HashedMap();

+ 2 - 0
src/main/java/com/uas/platform/b2c/common/search/rpc/service/SearchService.java

@@ -49,5 +49,7 @@ public interface SearchService {
 
     Map<String, Object> getGoodsIds(String keyword, PageParams var2) throws SearchException;
 
+    Map<String, Object> getGoodsIdsForKinds(PageParams var2) throws SearchException;
+
     List<Map<String, Object>> collectBySearchGoods(String keyword, CollectField collectField, Map<PageParams.FilterField, Object> filters);
 }

+ 53 - 5
src/main/java/com/uas/platform/b2c/prod/product/component/service/impl/ComponentGoodsServiceImpl.java

@@ -2,6 +2,8 @@ package com.uas.platform.b2c.prod.product.component.service.impl;
 
 import com.alibaba.fastjson.JSON;
 import com.uas.platform.b2c.common.search.rpc.service.SearchService;
+import com.uas.platform.b2c.prod.commodity.dao.GoodsDao;
+import com.uas.platform.b2c.prod.commodity.model.Goods;
 import com.uas.platform.b2c.prod.product.component.dao.ComponentGoodsDao;
 import com.uas.platform.b2c.prod.product.component.modal.ComponentGoods;
 import com.uas.platform.b2c.prod.product.component.service.ComponentGoodsService;
@@ -14,17 +16,18 @@ import com.uas.platform.b2c.common.search.util.PageParams.FilterField;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageImpl;
+import org.springframework.data.domain.Sort;
 import org.springframework.data.domain.Sort.Direction;
 import org.springframework.data.jpa.domain.Specification;
 import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+import org.springframework.util.StringUtils;
 
 import javax.persistence.criteria.CriteriaBuilder;
 import javax.persistence.criteria.CriteriaQuery;
 import javax.persistence.criteria.Predicate;
 import javax.persistence.criteria.Root;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 @Service
 public class ComponentGoodsServiceImpl implements ComponentGoodsService {
@@ -37,6 +40,10 @@ public class ComponentGoodsServiceImpl implements ComponentGoodsService {
 	
 	@Autowired
 	private KindService kindService;
+
+	@Autowired
+	private GoodsDao goodsDao;
+
 	
 	@Override
 	public Page<ComponentGoods> getCompGoodsByKindid(final PageInfo info) {
@@ -90,7 +97,48 @@ public class ComponentGoodsServiceImpl implements ComponentGoodsService {
 				Long kindid = Long.parseLong(filter.get("kindid").toString());
 				List<Long> ids = kindService.getLeafChildrenIdList(kindid);
 				info.expression(PredicateUtils.in("kindid", ids, false));
-				filter.remove("kindid");
+				// 该用搜索方式获取数据
+				com.uas.platform.b2c.common.search.util.PageParams pageParams = new com.uas.platform.b2c.common.search.util.PageParams();
+				pageParams.setPage(info.getPageNumber());
+				pageParams.setSize(info.getPageSize());
+				pageParams.filter(FilterField.GOODS_KINDID,ids);
+				pageParams.setSort(new com.uas.platform.b2c.common.search.util.Sort(com.uas.platform.b2c.common.search.util.Sort.Field.RESERVE,true));
+				Map<String,Object> results = searchService.getGoodsIdsForKinds(pageParams);
+				//为了反爬虫,最多只展示前Constant.PAGEMAX的数据,
+				int maxExposeInfo = Constant.PAGEMAX * info.getPageSize();
+				long totalElements = Long.parseLong(results.get("total").toString());
+				if(totalElements > new Long(maxExposeInfo).longValue()) {
+					totalElements = maxExposeInfo;
+				}
+				System.out.println(JSON.toJSON(info));
+				List<Integer> componentIds = (List<Integer>)results.get("componentIds");
+				List<Integer> goodsIds = (List<Integer>)results.get("goodsIds");
+				List<ComponentGoods> components = new ArrayList<>();
+				if (!CollectionUtils.isEmpty(componentIds)) {
+					for (int i = 0 ;i < componentIds.size() ; i++){
+						Long cid = null;
+						if(!StringUtils.isEmpty
+								(componentIds.get(i)))  {
+							cid = Long.valueOf(componentIds.get(i).toString());
+						}
+						Long gid = goodsIds.get(i) == null ? 0L : Long.valueOf(goodsIds.get(i).toString());
+						if((cid == null) && (gid != 0L)) {
+							Goods goods = goodsDao.findOne(gid);
+							if(goods != null) {
+								components.add(new ComponentGoods(goods));
+							}
+						}else if(cid != null){
+							ComponentGoods componentGoods = componentGoodsDao.findByCmpIdAndGoId(cid, gid);
+							if (componentGoods != null){
+								components.add(componentGoods);
+							}
+						}
+					}
+				}
+
+				Page page = new PageImpl<>(components, info, totalElements);
+				return page;
+				//filter.remove("kindid");
 			}
 		}
 		Page<ComponentGoods> page = componentGoodsDao.findAll(new Specification<ComponentGoods>() {
@@ -111,5 +159,5 @@ public class ComponentGoodsServiceImpl implements ComponentGoodsService {
 		page = new PageImpl<>(page.getContent(), info, totalElements);
 		return page;
 	}
-	
+
 }

+ 3 - 3
src/main/webapp/resources/js/vendor/controllers/forstore/vendor_materialCtrl.js

@@ -213,12 +213,12 @@ define([ 'app/app', 'jquery-uploadify' ], function(app) {
             if (data && typeof data.fluctuateRate != 'undefined') {
                 $scope.uasBatchPutOnProperty = data;
                 $scope.uasBatchPutOnProperty.editFluctuateRate = NumberService.mul($scope.uasBatchPutOnProperty.fluctuateRate, 100) || 100;
-                $scope.uasBatchPutOnProperty.editMaxDelivery = $scope.uasBatchPutOnProperty.maxDelivery || 1;
+                $scope.uasBatchPutOnProperty.editMaxDelivery = $scope.uasBatchPutOnProperty.maxDelivery || 10;
                 $scope.uasBatchPutOnProperty.editMinDelivery = $scope.uasBatchPutOnProperty.minDelivery || 1;
             } else {
 				$scope.uasBatchPutOnProperty = {};
                 $scope.uasBatchPutOnProperty.editFluctuateRate = 100;
-                $scope.uasBatchPutOnProperty.editMaxDelivery = 1;
+                $scope.uasBatchPutOnProperty.editMaxDelivery = 10;
                 $scope.uasBatchPutOnProperty.editMinDelivery = 1;
             }
         }, function (response) {
@@ -1818,7 +1818,7 @@ define([ 'app/app', 'jquery-uploadify' ], function(app) {
 			$scope.goods.editPackaging = (data && data.packaging) || product.packaging || '无';
 			$scope.goods.editProduceDate = (data && data.produceDate) || product.produceDate;
 			$scope.goods.editMinPackQty = (data && data.minPackQty) || product.minPackQty || $scope.goods.minBuyQty || 1;
-			$scope.goods.editMinBuyQty = (data && data.minBuyQty) || $scope.goods.minPackQty;
+			$scope.goods.editMinBuyQty = (data && data.minBuyQty) || $scope.goods.minPackQty || $scope.goods.editMinPackQty;
 			$scope.goods.editMinBuyQty = $scope.goods.editMinBuyQty - ($scope.goods.editMinBuyQty % $scope.goods.editMinPackQty);
 			if ($scope.goods.editMinBuyQty < $scope.goods.editMinPackQty) {
 				$scope.goods.editMinBuyQty = $scope.goods.editMinPackQty;

+ 10 - 1
src/main/webapp/resources/js/vendor/controllers/forstore/vendor_upload_ctrl.js

@@ -1,6 +1,6 @@
 define([ 'app/app' ], function(app) {
 	'use strict';
-	app.register.controller('vendorUploadCtrl', ['$scope', '$rootScope', 'ngTableParams', '$upload', '$q', 'AuthenticationService', 'BaseService', 'StoreInfo', 'SessionService', '$modal', 'toaster', 'ReleaseProductByBatch', 'Loading', 'Enterprise', 'DistributionRule', '$state', function ($scope, $rootScope, ngTableParams, $upload, $q, AuthenticationService, BaseService, StoreInfo, SessionService, $modal, toaster, ReleaseProductByBatch, Loading, Enterprise, DistributionRule, $state) {
+	app.register.controller('vendorUploadCtrl', ['$scope', '$rootScope', 'ngTableParams', '$upload', '$q', 'AuthenticationService', 'BaseService', 'StoreInfo', 'SessionService', '$modal', 'toaster', 'ReleaseProductByBatch', 'Loading', 'Enterprise', 'DistributionRule', '$state', '$location', function ($scope, $rootScope, ngTableParams, $upload, $q, AuthenticationService, BaseService, StoreInfo, SessionService, $modal, toaster, ReleaseProductByBatch, Loading, Enterprise, DistributionRule, $state, $location) {
 	    if (!$rootScope.$$productOn) {
             $rootScope.$$productOn = {};
             $rootScope.$$productOn.leadIn = 'bathOn';
@@ -15,12 +15,21 @@ define([ 'app/app' ], function(app) {
                 $state.reload();
             }
         };
+        if ($location.$$search.type == 'self') {
+            $scope.toggleActive('bathOnPerson');
+        }
         $scope.deletePop = false;
         $scope.personMedol =false;
         $scope.setPersonMedol = function () {
             $scope.personMedol =false;
         };
 
+        $scope.showTip = true;
+
+        $scope.closeTip = function () {
+            $scope.showTip = false;
+        }
+
         //获取币别信息
         Enterprise.getCurrencyByRegisterAddress(null, function (data) {
             if(data.code == 1) {

+ 1 - 1
src/main/webapp/resources/view/usercenter/forstore/browsing_history.html

@@ -423,7 +423,7 @@
         <ul>
             <li ng-class="{'select': isBatch&& !item.active ,'isselect': isBatch&& item.active }" ng-repeat="item in his.dateList" ng-click="setActive(item)">
                 <div class="img">
-                    <a name="detail" href="{{'store/' + item.storeid + '/' + item.batchCode}}">
+                    <a name="detail" href="{{'store/productDetail/' + item.batchCode}}">
                         <img ng-src="{{item.img || '/static/img/store/common/default.png'}}"/></a>
                 </div>
                 <div class="content">

+ 1 - 0
src/main/webapp/resources/view/usercenter/forstore/buyer_cart.html

@@ -538,6 +538,7 @@
 	.com-del-box {
 		top: 101%!important ;
 		left: 24%!important ;
+		background: #fff !important;
 	}
 	.com-del-box .title{
 		width: 100%!important ;

+ 2 - 2
src/main/webapp/resources/view/vendor/forstore/vendor_material_person.html

@@ -1946,8 +1946,8 @@
 						<img src="static/img/all/empty-cart.png">
 					</p>
 					<div class="empty-info">
-						<p class="grey"> 暂无产品信息,赶快上传让更多人看到你的产品吧 </p>
-						<a href="/vendor#/vendor_upload"><i></i>马上去上传</a>
+						<p class="grey"> 创建您的个人产品库,可为您精准推送客户需求 </p>
+						<a href="vendor#/vendor_upload?type=self"><i></i>马上去上传</a>
 					</div>
 				</div>
 				<div class="record-line text-right" ng-if="currenctMaterial.length != 0">

+ 30 - 2
src/main/webapp/resources/view/vendor/forstore/vendor_upload.html

@@ -461,16 +461,44 @@
         border-bottom: 1px solid #5078cb !important;
         color: #5078cb !important;
     }
+    .result{
+        width: 100%;
+        height: 30px;
+        line-height: 30px;
+        text-align: center;
+        background: #fef6f2;
+        border: 1px solid #ec854d;
+        overflow: hidden ;
+    }
+    .result span{
+        margin-left: 330px;
+        height: 30px;
+        font-size: 14px;
+        color: #f15601;
+    }
+    .result span em{
+        font-size: 14px;
+        color: #f15601;
+    }
+    .result a{
+        padding-right: 10px;
+        float: right;
+        font-size: 20px;
+        font-weight: bold;
+        color: #ef1d1d;
+    }
 </style>
 <div class="user_right fr">
     <!--货品管理-->
     <div class="pro_management device">
         <div class="com_tab">
             <ul class="fl" style="width: 100%">
-                <li ng-class="{'active': $$productOn.tab == 'bathOn'}" ng-click="toggleActive('bathOn')"><a href="">批量发布</a></li>
-                <li ng-class="{'active': $$productOn.tab == 'bathOnPerson'}" ng-click="toggleActive('bathOnPerson')"><a href="">导入我的产品</a></li>
+                <li ng-class="{'active': $$productOn.tab == 'bathOn'}" ng-click="toggleActive('bathOn')"><a href="">导入企业库</a></li>
+                <li ng-class="{'active': $$productOn.tab == 'bathOnPerson'}" ng-click="toggleActive('bathOnPerson')"><a href="">导入个人库</a></li>
             </ul>
         </div>
+        <div class="result" ng-show="$$productOn.tab == 'bathOn' && showTip"><span class="fl"><em>*</em>导入企业库的产品同时会进行上架销售并展示在店铺</span><a ng-click="closeTip()" class="fr">&times;</a></div>
+        <div class="result" ng-show="$$productOn.tab == 'bathOnPerson' && showTip"><span class="fl"><em>*</em>创建您的个人产品库,可为您精准推送客户需求</span><a ng-click="closeTip()" class="fr">&times;</a></div>
         <div class="wanted_list01">
             <div class="tab" ng-if="$$productOn.leadIn == 'bathOn'" ng-class="{'active': leadIn == 'bathOn'}" >
                 <div class="load_next" ng-class="{'border-none':open01}">