Quellcode durchsuchen

1:购物车bug处理。

yujia vor 8 Jahren
Ursprung
Commit
ada734d769

+ 1 - 0
src/main/java/com/uas/platform/b2c/trade/presale/service/impl/CartServiceImpl.java

@@ -397,6 +397,7 @@ public class CartServiceImpl implements CartService {
 		Map<String, Object> map = new HashMap<String, Object>();
 		Map<String, List<Cart>> contentMap = new HashMap<>();
 		info.sorting("storeUuid", Sort.Direction.DESC);
+		info.sorting("id", Sort.Direction.DESC);
 		// 获取当前页的购物车记录信息
 		Page<Cart> carts = cartDao.findAll(new Specification<Cart>() {
 			@Override

+ 65 - 64
src/main/webapp/resources/js/usercenter/controllers/forstore/buyer_cart_ctrl.js

@@ -11,7 +11,7 @@ define(["app/app", 'jquery-summernote'], function(app) {
 		 * */
 		var enIdFilter = $filter('EncryptionFilter');
 		$scope.cartExist = true;
-		$scope.isLoading = false;
+		$scope.isDataLoading = false;
 		$scope.errors = null;
 		$scope.goodsInfo = [];
 		$scope.carts = [];
@@ -37,60 +37,53 @@ define(["app/app", 'jquery-summernote'], function(app) {
 		$scope.cartIsEmpty = true;
 		$scope.countByPage = 0;
 		$scope.cartMap = [];
+		/**
+		 * 全选状态信息
+		 */
+		$scope.isChooseAll = false;
 
 		$scope.loadData = function (){
-			if(!$scope.isLoading) {
-				$scope.isLoading = true;
-				Cart.getPageInfo($scope.pageInfo, function(data) {
-					$scope.isLoading = false;
-					$scope.total = data.totalElements;
-					$scope.pageNum = data.totalPages;
-
-					angular.forEach(data.content, function (cart) {
-						if(cart.currencyName.indexOf("RMB") > -1) {
-							cart.buyCurrency = "RMB";
-						}else {
-							cart.buyCurrency = "USD";
-						}
-						cart.isSelect = false;
-						//计算分段和统计一下价格
-						$scope.getPrice(cart);
-
-						//便于后期循环
-						$scope.carts.push(cart);
-						$scope.disabledAddAndSub(cart);
-						$scope.countByPage += 1;
-						var isContain = false;
-						for (var i = 0; i < $scope.cartMap.length; i++) {
-							if(angular.equals($scope.cartMap[i].name, cart.storeName)) {
-								$scope.cartMap[i].arr.push(cart);
-								isContain = true;
-							}
-						}
-						if(!isContain) {
-							var obj = {};
-							obj.name = cart.storeName;
-							obj.arr = [];
-							obj.arr.push(cart);
-							$scope.cartMap.push(obj);
+			Cart.getPageInfo($scope.pageInfo, function(data) {
+				$scope.isDataLoading = false;
+				$scope.total = data.totalElements;
+				$scope.pageNum = data.totalPages;
+
+				angular.forEach(data.content, function (cart) {
+					cart.buyCurrency = cart.currencyName.indexOf("RMB") > -1 ? "RMB" : "USD";
+					cart.isSelect = false;
+					//计算分段和统计一下价格
+					$scope.getPrice(cart);
+
+					//便于后期循环
+					$scope.carts.push(cart);
+					$scope.disabledAddAndSub(cart);
+					$scope.countByPage += 1;
+					var isContain = false;
+					for (var i = 0; i < $scope.cartMap.length; i++) {
+						if(angular.equals($scope.cartMap[i].name, cart.storeName)) {
+							$scope.cartMap[i].arr.push(cart);
+							isContain = true;
 						}
-					});
-					if(!$scope.carts.length) {
-						$scope.cartIsEmpty = true;
-					}else {
-						$scope.cartIsEmpty = false;
 					}
-					//设置全选的复选框
-					$scope.isChooseAll = $scope.isAllSelect($scope.carts);
+					if(!isContain) {
+						var obj = {};
+						obj.name = cart.storeName;
+						obj.arr = [];
+						obj.arr.push(cart);
+						$scope.cartMap.push(obj);
+					}
+				});
+				$scope.cartIsEmpty = !$scope.carts.length ? true : false;
+				//设置全选的复选框
+				$scope.isChooseAll = $scope.isAllSelect($scope.carts);
 
-					//设置店铺复选框的状态
-					angular.forEach($scope.cartMap, function (store) {
-						$scope.selectedStore[store.name] = $scope.isAllSelect(store.arr);
-					});
-				},function() {
-					toaster.pop('error', "提示", "获取购物车信息失败,请刷新页面");
+				//设置店铺复选框的状态
+				angular.forEach($scope.cartMap, function (store) {
+					$scope.selectedStore[store.name] = $scope.isAllSelect(store.arr);
 				});
-			}
+			},function() {
+				toaster.pop('error', "提示", "获取购物车信息失败,请刷新页面");
+			});
 		};
 
 		$scope.loadData();
@@ -100,8 +93,11 @@ define(["app/app", 'jquery-summernote'], function(app) {
 		 */
 		$scope.scrollLoadData = function () {
 			if($scope.pageInfo.page < $scope.pageNum) {
-				$scope.pageInfo.page++;
-				$scope.loadData();
+				if(!$scope.isDataLoading) {
+					$scope.isDataLoading = true;
+					$scope.pageInfo.page++;
+					$scope.loadData();
+				}
 			}
 		};
 
@@ -232,12 +228,15 @@ define(["app/app", 'jquery-summernote'], function(app) {
 			if (c.number < c.goods.minBuyQty || !c.number) {
 				toaster.pop("info", "提示", "该商品最少购买" + c.goods.minBuyQty + "件");
 				c.number = c.goods.minBuyQty;
-			}else if(c.number > c.goods.reserve){
+			}else if(c.number <= c.goods.reserve){
+				c.number = Number(NumberService.sub(Number(c.number), c.number % c.goods.minPackQty));
+			}else{
 				toaster.pop("info", "提示", "库存不足");
 				if(c.number > c.goods.reserve) {
 					c.number = Number(NumberService.sub(c.goods.reserve, c.goods.reserve % c.goods.minPackQty));
 				}
 			}
+
 			$scope.disabledAddAndSub(c);
 			$scope.getPrice(c);
 			//计算总金额,统计购买器件数
@@ -572,11 +571,6 @@ define(["app/app", 'jquery-summernote'], function(app) {
 		 * 选中操作
 		 **********************************************************************/
 
-		/**
-		 * 全选状态信息
-		 */
-		$scope.isChooseAll = false;
-
 		/**
 		 * 全选操作
 		 */
@@ -613,13 +607,18 @@ define(["app/app", 'jquery-summernote'], function(app) {
 
 		//检查是否所有的状态都已经选中或者取消了。
 		$scope.isAllSelect = function (carts) {
-			var isAllChecked = true;//假定都选中,
-			angular.forEach(carts, function(cart) {
-				if(cart.status != 1 && !cart.isSelect) {
-					isAllChecked = false;
+			var isAllChecked = true;//假定都选中
+			var isAlldisabled = true;
+			for(var i = 0; i < carts.length; i++) {
+				var cart = carts[i];
+				if(cart.status != 1) {
+					isAlldisabled = false;
+					if(!cart.isSelect) {
+						isAllChecked = false;
+					}
 				}
-			});
-			return isAllChecked;
+			}
+			return !isAlldisabled&&isAllChecked;
         };
         /**
 		 * 店铺选中状态信息
@@ -926,7 +925,9 @@ define(["app/app", 'jquery-summernote'], function(app) {
 				uuid: commodity.uuid,
 				batchCode: commodity.batchCode,
 				number: number ? number : commodity.minBuyQty,
-				currencyName: currency ? currency == 'RMB-USD' ? 'RMB' : currency : ''
+				currencyName: currency ? currency == 'RMB-USD' ? 'RMB' : currency : '',
+				minPackQty : commodity.minPackQty,
+				storeUuid : commodity.storeid
 			};
 			var goodsList = [];
 			goodsList.push(cart);

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

@@ -583,7 +583,7 @@
 								<div class="btn-wrap">
 									<span class="number">
 										<a class="reduce" ng-disabled="cart.minusDisabled" ng-click="reduce(cart)">-</a>
-										<input type="text" ng-model="cart.number" ng-blur="blurNum(cart)">
+										<input type="text" ng-disabled="cart.status == 1" ng-model="cart.number" ng-blur="blurNum(cart)">
 										<a class="add" ng-disabled="cart.addDisabled" ng-click="add(cart)">+</a>
 									</span>
 									<i ng-if="cart.status == 2" style="color: #f00; margin-left: 32px;">库存紧张</i>