Переглянути джерело

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

ouxq 8 роки тому
батько
коміт
5eb0495a4a
24 змінених файлів з 389 додано та 259 видалено
  1. 1 0
      .gitignore
  2. 4 2
      src/main/java/com/uas/platform/b2c/trade/presale/controller/CollectionController.java
  3. 1 0
      src/main/java/com/uas/platform/b2c/trade/presale/service/impl/CartServiceImpl.java
  4. 4 0
      src/main/java/com/uas/platform/b2c/trade/presale/service/impl/CollectionServiceImpl.java
  5. 1 0
      src/main/webapp/resources/js/prod/controllers/ComponentCtrl.js
  6. 12 2
      src/main/webapp/resources/js/usercenter/app.js
  7. 63 101
      src/main/webapp/resources/js/usercenter/controllers/forstore/account_manager_ctrl.js
  8. 69 64
      src/main/webapp/resources/js/usercenter/controllers/forstore/buyer_cart_ctrl.js
  9. 10 0
      src/main/webapp/resources/js/usercenter/controllers/forstore/buyer_order_ctrl.js
  10. 78 37
      src/main/webapp/resources/js/usercenter/controllers/forstore/order_pay_ctrl.js
  11. 14 2
      src/main/webapp/resources/js/vendor/controllers/forstore/purchase_detail.js
  12. 74 37
      src/main/webapp/resources/js/vendor/controllers/forstore/vendor_delivery_ctrl.js
  13. 0 1
      src/main/webapp/resources/js/vendor/controllers/forstore/vendor_logistics_ctrl.js
  14. 10 0
      src/main/webapp/resources/js/vendor/controllers/forstore/vendor_order_ctrl.js
  15. 2 2
      src/main/webapp/resources/view/prod/modal/edit-invoice-modal.html
  16. 1 1
      src/main/webapp/resources/view/usercenter/forstore/account_manager.html
  17. 1 1
      src/main/webapp/resources/view/usercenter/forstore/buyer_cart.html
  18. 1 1
      src/main/webapp/resources/view/usercenter/forstore/buyer_order.html
  19. 3 3
      src/main/webapp/resources/view/usercenter/forstore/order_pay.html
  20. 2 1
      src/main/webapp/resources/view/usercenter/modal/collectModel.html
  21. 2 2
      src/main/webapp/resources/view/vendor/forstore/purchase_detail.html
  22. 1 1
      src/main/webapp/resources/view/vendor/forstore/vendor_delivery.html
  23. 1 1
      src/main/webapp/resources/view/vendor/forstore/vendor_order.html
  24. 34 0
      src/test/java/com/uas/platform/b2c/RegistForMall.java

+ 1 - 0
.gitignore

@@ -33,6 +33,7 @@ tmp/
 # Java
 ## Compiled class file
 *.class
+test/
 
 ## Log file
 *.log

+ 4 - 2
src/main/java/com/uas/platform/b2c/trade/presale/controller/CollectionController.java

@@ -157,6 +157,7 @@ public class CollectionController {
 	@RequestMapping(value = "/save", method = RequestMethod.POST)
 	@ApiOperation(value = "保存收藏信息", httpMethod = "POST")
 	public String saveEntity(@ApiParam(required = true, value = "保存的json对象") @RequestBody String str) {
+		String result = "success";
 		if (StringUtils.hasText(str)) {
 			Collection store = FastjsonUtils.fromJson(str, Collection.class);
 			store.setUseruu(SystemSession.getUser().getUserUU());
@@ -167,9 +168,10 @@ public class CollectionController {
 				store.setDissociative(Type.PERSONAL.value());
 			}
 			store.setCreatetime(new Date());
-			collectionService.save(store);
+			result = collectionService.save(store);
 		}
-		return "success";
+		System.out.println("result = " + result);
+		return result;
 	}
 
 }

+ 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

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

@@ -75,12 +75,16 @@ public class CollectionServiceImpl implements CollectionService {
 
 			if (storeList.size() == 0) {
 				collectionDao.save(store);
+			}else {
+				return "repeat";
 			}
 		} else if (store.getKind() == 2) {
 			List<Collection> storelist = collectionDao.findStoreByUseruuAndEnuuAndKindAndComponentid(
 					SystemSession.getUser().getUserUU(), SystemSession.getUser().getEnterprise().getUu(), 2, store.getComponentid());
 			if (storelist.size() == 0) {
 				collectionDao.save(store);
+			}else {
+				return "repeat";
 			}
 		}
 		return "success";

+ 1 - 0
src/main/webapp/resources/js/prod/controllers/ComponentCtrl.js

@@ -364,6 +364,7 @@ define([ 'app/app', 'jquery-summernote' ], function(app) {
 	}]);
 	
 	app.register.controller('CollectModelCtrl', ['$scope', '$modalInstance', function($scope, $modalInstance){
+		$scope.haveAdd = true;
 		$scope.cancel = function() {
 			$modalInstance.dismiss();
 		};

+ 12 - 2
src/main/webapp/resources/js/usercenter/app.js

@@ -557,7 +557,16 @@ define([ 'angularAMD', 'ui.router', 'ui-bootstrap', 'ngLocal', 'ngTable', 'commo
 				$modal.open({
 					 templateUrl : $rootScope.rootPath + '/static/view/usercenter/modal/collectModel.html',
 					 controller : 'CollectModelCtrl',
-					 size : 'sm'
+					 size : 'sm',
+					 resolve : {
+						haveAdd : function(){
+							if (data == "success"){
+								return true;
+							} else{
+								return false;
+							}
+						}
+					 }
 				});
 				$rootScope.componentCount++;
 			}, function(error) {
@@ -567,7 +576,8 @@ define([ 'angularAMD', 'ui.router', 'ui-bootstrap', 'ngLocal', 'ngTable', 'commo
 			
 	}]);
 	
-	app.controller('CollectModelCtrl', ['$scope', '$modalInstance', function($scope, $modalInstance){
+	app.controller('CollectModelCtrl', ['$scope', '$modalInstance', 'haveAdd', function($scope, $modalInstance, haveAdd){
+		$scope.haveAdd = haveAdd;
 		$scope.cancel = function() {
 			$modalInstance.dismiss();
 		};

+ 63 - 101
src/main/webapp/resources/js/usercenter/controllers/forstore/account_manager_ctrl.js

@@ -278,7 +278,11 @@ define(['app/app'], function(app) {
 						return false;
 					},
 					isModify : function () {
-						return true;
+						if (address){
+							return true;
+						}else {
+							return false;
+						}
 					}
 				}
 			}).result.then(function(address){
@@ -286,133 +290,76 @@ define(['app/app'], function(app) {
 					$scope.loadAddresses();
 				}
 			}, function(){
-				toaster.pop('info', '提示 ' + '您已取消发货地址的编辑');
+				// toaster.pop('info', '提示 ' + '您已取消发货地址的编辑');
 			});
 		};
 
-		$scope.addAddress = function () {
-			$modal.open({
-				templateUrl : $rootScope.rootPath + '/static/view/common/modal/edit_address_modal.html',
-				controller : 'addAddrCtrl',
-				size : 'lg',
-				resolve : {
-					isSendType : function () {
-						return false;
-					},
-					isModify : function () {
-						return false;
-					}
-				}
-			}).result.then(function(address){
-				if (address) {
-					$scope.loadAddresses();
-				}
-			}, function(){
-				toaster.pop('info', '提示 ' + '您已取消发货地址的编辑');
-			});
-		};
-
-		//地址新增模态框
-		app.register.controller('addAddrCtrl', ['$scope', '$modalInstance', 'toaster', '$http', 'ShippingAddress', 'isSendType', 'isModify', function($scope, $modalInstance, toaster, $http, ShippingAddress, isSendType, isModify){
-			$scope.isSendType = isSendType;
-			$scope.isSetTop = false;
-			$scope.isModify = isModify;
-			$http.get('static/js/prod/data/city.json').success(function(data) {
-				$scope.division = data;
-			}).error(function() {
-				toaster.pop('error', '系统错误 ' + '加载城市信息失败');
-			});
-
-			$scope.checkForm = function(name, num) {
-				var size;
-				if(num == 1) {
-					size = document.getElementById("userName").value.length;
-					if (size > 10) {
-						$scope.userError = true;
-						return;
-					}
-					$scope.userError = false;
-				} else if(num == 2) {
-					size = document.getElementById("tel").value.length;
-					if (size > 11) {
-						$scope.telError = true;
-						return;
-					}
-					$scope.telError = false;
-				} else if(num == 3) {
-					size = document.getElementById("addr").value.length;
-					if (size > 30) {
-						$scope.addrError = true;
-						return;
-					}
-					$scope.addrError = false;
-				}
-			};
-
-			$scope.save = function () {
-				var address = $scope.address;
-
-				//拼装地区
-				address.area = address.province + ',' + address.city + ',' + address.district;
-
-
-				// send属性 控制本地址是否是发货地址
-				ShippingAddress.save({isSetTop: $scope.isSetTop, send: $scope.isSendType, isPersonal: !$scope.isSendType}, address, function(data){
-					toaster.pop('success', '成功 ', '保存收货地址成功');
-					$modalInstance.close(data);
-				}, function(){
-					toaster.pop('error', '系统错误 ', '保存收货地址失败');
-				});
-			};
-
-			$scope.cancel = function() {
-				$modalInstance.dismiss();
-			};
-		}]);
-
 		//地址编辑模态框
 		app.register.controller('editAddrCtrl', ['$scope', 'addr', '$modalInstance', 'toaster', '$http', 'ShippingAddress', 'isSendType', 'isModify', function($scope, addr, $modalInstance, toaster, $http, ShippingAddress, isSendType, isModify){
-			$scope.isSetTop = addr.num == 1;
+			if (addr){
+				$scope.isSetTop = addr.num == 1;
+			}else {
+				$scope.isSetTop = false;
+			}
 			$scope.isSendType = isSendType;
 			$scope.isModify = isModify;
 
-			$scope.checkForm = function(name, num) {
+			$scope.checkForm = function(num) {
 				var size;
 				if(num == 1) {
-					size = document.getElementById("userName").value.length;
-					if (size > 10) {
-						$scope.userError = true;
-						return;
+					if ($scope.address.name){
+						size = $scope.address.name.replace(/[^x00-xFF]/g,'**').length;
+						if (size > 20) {
+							console.log(size);
+							$scope.userError = true;
+							return;
+						}
+						$scope.userError = false;
 					}
-					$scope.userError = false;
 				} else if(num == 2) {
-					size = document.getElementById("tel").value.length;
-					if (size > 11) {
-						$scope.telError = true;
-						return;
+					if ($scope.address.tel){
+						size = $scope.address.tel.replace(/[^x00-xFF]/g,'**').length;
+						if (size < 8 || size > 11) {
+							$scope.telError = true;
+							return;
+						}
+						$scope.telError = false;
+						var telPatt = new RegExp("^[0-9]+$");
+						if (telPatt.test($scope.address.tel)){
+							$scope.telPatternError = false;
+						}else {
+							$scope.telPatternError = true;
+						}
 					}
-					$scope.telError = false;
 				} else if(num == 3) {
-					size = document.getElementById("addr").value.length;
-					if (size > 30) {
-						$scope.addrError = true;
-						return;
+					if ($scope.address.detailAddress){
+						size = $scope.address.detailAddress.replace(/[^x00-xFF]/g,'**').length;
+						if (size > 60) {
+							$scope.addrError = true;
+							return;
+						}
+						$scope.addrError = false;
+					}
+				} else if(num == 4) {
+					var emailPatt = new RegExp("^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$");
+					if ($scope.address.email.length > 0 && !emailPatt.test($scope.address.email)){
+						$scope.emailPatternError = true;
+					}else {
+						$scope.emailPatternError = false;
 					}
-					$scope.addrError = false;
 				}
 			};
 
 			$http.get('static/js/prod/data/city.json').success(function(data) {
 				$scope.division = data;
 				if(addr && addr.area){
-					$scope.address = addr;
+					// $scope.address = addr;
 					//拼装下拉选择框
 					var arr = addr.area.split(',');
 					addr.province = arr[0];
 					addr.city = arr[1];
 					addr.district = arr[2];
 					$scope.address = addr;
-					$scope.addr = true;
 				}
 			}).error(function() {
 				toaster.pop('error', '系统错误 ' + '加载城市信息失败');
@@ -421,6 +368,21 @@ define(['app/app'], function(app) {
 			$scope.save = function () {
 				var address = $scope.address;
 
+				if (!address){
+					toaster.pop('error', '请补充未填写的信息');
+					return ;
+				}
+				if (!address.name || !address.province || !address.city || !address.district ||
+					!address.detailAddress || !address.tel){
+					toaster.pop('error', '请补充未填写的信息');
+					return ;
+				}
+				if ($scope.userError || $scope.telError || $scope.addrError || $scope.telPatternError ||
+					$scope.emailPatternError){
+					toaster.pop('error', '请修改红色框内的信息');
+					return ;
+				}
+
 				//拼装地区
 				address.area = address.province + ',' + address.city + ',' + address.district;
 

+ 69 - 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;
         };
         /**
 		 * 店铺选中状态信息
@@ -897,6 +896,10 @@ define(["app/app", 'jquery-summernote'], function(app) {
 						}
 					});
 				});
+				if (uuids.length == 0){
+					toaster.pop('info', '你还未选择任何产品');
+					return;
+				}
                 collectionService.saveStores({ }, uuids, function(response){
 					if(response.data == "success"){
                         $scope.collectDelete();
@@ -926,7 +929,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);

+ 10 - 0
src/main/webapp/resources/js/usercenter/controllers/forstore/buyer_order_ctrl.js

@@ -239,6 +239,16 @@ define(['app/app'], function (app) {
 			});
 		};
 
+		//取消订单状态码
+		$scope.cancelOrderArray = {
+			602: true,
+			603: true,
+			315: true,
+			604: true,
+			605: true,
+			606: true
+		};
+
 		var getRecommendComps = function (userUU, usedFor, pageable) {
 			Recommendation.getRecommendComps({page: pageable.page, size: pageable.size}, function (data) {
 				$scope.recommendComps = data.content;

+ 78 - 37
src/main/webapp/resources/js/usercenter/controllers/forstore/order_pay_ctrl.js

@@ -445,11 +445,18 @@ define(['app/app'], function(app) {
 			$scope.isnotCheck = true;
 			$modal.open({
 				templateUrl : $rootScope.rootPath + '/static/view/common/modal/edit_address_modal.html',
-				controller : 'editAddrCtrl',
+				controller : 'editAddrPayCtrl',
 				size : 'lg',
 				resolve : {
 					addr : function(){
 						return angular.copy(addr);
+					},
+					isModify : function () {
+						if (addr){
+							return true;
+						}else {
+							return false;
+						}
 					}
 				}
 			}).result.then(function(address){
@@ -563,66 +570,100 @@ define(['app/app'], function(app) {
 	}]);
 
 	//地址编辑模态框
-	app.register.controller('editAddrCtrl', ['$scope', 'addr', '$modalInstance', 'toaster', '$http', 'ShippingAddress', function($scope, addr, $modalInstance, toaster, $http, ShippingAddress){
+	app.register.controller('editAddrPayCtrl', ['$scope', 'addr', '$modalInstance', 'toaster', '$http', 'ShippingAddress', 'isModify', function($scope, addr, $modalInstance, toaster, $http, ShippingAddress, isModify){
 		if (addr){
 			$scope.isSetTop = addr.num == 1;
 		}else {
 			$scope.isSetTop = false;
 		}
+		$scope.isModify = isModify;
 		$scope.validEmail = function (email) {
 			return /^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/.test(email)
         };
-        //验证数据
-        $scope.checkForm = function(name, num) {
-            var size;
-            if(num == 1) {
-                size = document.getElementById("userName").value.length;
-                console.log(size);
-                if (size > 10) {
-                    $scope.userError = true;
-                    return;
-                }
-                $scope.userError = false;
-            } else if(num == 2) {
-                size = document.getElementById("tel").value.length;
-                console.log(size);
-                if (size > 11) {
-                    $scope.telError = true;
-                    return;
-                }
-                $scope.telError = false;
-            } else if(num == 3) {
-                size = document.getElementById("addr").value.length;
-                console.log(size);
-                if (size > 30) {
-                    $scope.addrError = true;
-                    return;
-                }
-                $scope.addrError = false;
-            }
-        };
+
 		$http.get('static/js/prod/data/city.json').success(function(data) {
 			$scope.division = data;
 			if(addr && addr.area){
-				$scope.address = addr;
+				// $scope.address = addr;
 				//拼装下拉选择框
 				var arr = addr.area.split(',');
 				addr.province = arr[0];
 				addr.city = arr[1];
 				addr.district = arr[2];
 				$scope.address = addr;
-				$scope.addr = true;
+				// $scope.addr = true;
 			}
-		}).error(function(e) {
+		}).error(function() {
 			toaster.pop('error', '系统错误 ' + '加载城市信息失败');
 		});
 
+        //验证数据
+		$scope.checkForm = function(num) {
+			var size;
+			if(num == 1) {
+				if ($scope.address.name){
+					size = $scope.address.name.replace(/[^x00-xFF]/g,'**').length;
+					if (size > 20) {
+						$scope.userError = true;
+						return;
+					}
+					$scope.userError = false;
+				}
+			} else if(num == 2) {
+				if ($scope.address.tel){
+					size = $scope.address.tel.replace(/[^x00-xFF]/g,'**').length;
+					if (size < 8 || size > 11) {
+						$scope.telError = true;
+						return;
+					}
+					$scope.telError = false;
+					var telPatt = new RegExp("^[0-9]+$");
+					if (telPatt.test($scope.address.tel)){
+						$scope.telPatternError = false;
+					}else {
+						$scope.telPatternError = true;
+					}
+				}
+			} else if(num == 3) {
+				if ($scope.address.detailAddress){
+					size = $scope.address.detailAddress.replace(/[^x00-xFF]/g,'**').length;
+					if (size > 60) {
+						$scope.addrError = true;
+						return;
+					}
+					$scope.addrError = false;
+				}
+			} else if(num == 4) {
+				var emailPatt = new RegExp("^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$");
+				if ($scope.address.email.length > 0 && !emailPatt.test($scope.address.email)){
+					$scope.emailPatternError = true;
+				}else {
+					$scope.emailPatternError = false;
+				}
+			}
+		};
+
+
+
 		$scope.save = function () {
 			var address = $scope.address;
+
+			if (!address){
+				toaster.pop('error', '请补充未填写的信息');
+				return ;
+			}
+			if (!address.name || !address.province || !address.city || !address.district ||
+				!address.detailAddress || !address.tel){
+				toaster.pop('error', '请补充未填写的信息');
+				return ;
+			}
+			if ($scope.userError || $scope.telError || $scope.addrError || $scope.telPatternError ||
+				$scope.emailPatternError){
+				toaster.pop('error', '请修改红色框内的信息');
+				return ;
+			}
+
 			//拼装地区
-			/**
-			 * TODO 这里没做校验
-			 */
 			var strAres = address.province + ',' + address.city + ',' + address.district;
 			address.area = strAres;
 

+ 14 - 2
src/main/webapp/resources/js/vendor/controllers/forstore/purchase_detail.js

@@ -185,7 +185,19 @@ define(['app/app'], function(app) {
 			});
 		}
 
-		$scope.updateTotal = function () {
+		$scope.updateTotal = function (data) {
+			if (isNaN(data.currentTaxUnitPrice)){
+				data.currentTaxUnitPrice = 0.000001;
+				toaster.pop('warning', '提示', '输入的价格必须是数字');
+				return ;
+			}
+			if (Number(data.currentTaxUnitPrice) <= 0){
+				data.currentTaxUnitPrice = 0.000001;
+			}
+			if (Number(data.currentTaxUnitPrice) > 100000){
+				data.currentTaxUnitPrice = 100000;
+			}
+			data.currentTaxUnitPrice = Number(NumberService.toCeil(data.currentTaxUnitPrice, 6));
 			$scope.purchase.currentTotal = 0;
 			angular.forEach($scope.purchase.purchaseDetails, function (detail) {
 				$scope.purchase.currentTotal += detail.currentTaxUnitPrice * detail.number;
@@ -217,7 +229,7 @@ define(['app/app'], function(app) {
                 var param = { };
                 param.detailid  = $scope.purchase.purchaseDetails[i].detailid;
                 param.modifyingUnitPrice = $scope.purchase.purchaseDetails[i].currentTaxUnitPrice;
-                if($scope.purchase.purchaseDetails[i].currentTaxUnitPrice <= 0.000001){
+                if($scope.purchase.purchaseDetails[i].currentTaxUnitPrice < 0.000001){
                     toaster.pop('info', '金额必须要大于0.000001');
                     return;
                 }

+ 74 - 37
src/main/webapp/resources/js/vendor/controllers/forstore/vendor_delivery_ctrl.js

@@ -180,7 +180,7 @@ define(['app/app'], function(app) {
             $scope.isnotCheck = true;
             $modal.open({
                 templateUrl : 'static/view/common/modal/edit_address_modal.html',
-                controller : 'editAddrCtrl',
+                controller : 'editAddrDeCtrl',
                 size : 'lg',
                 resolve : {
                     addr : function(){
@@ -206,6 +206,7 @@ define(['app/app'], function(app) {
         var loadAddrs = function() {
             ShippingAddress.getListEnterprise({ship : false}, function(data) {
                 $scope.addresss = data;
+                $scope.total = $scope.addresss.length;
                 $scope.jsonSdAddress = {};
                 if($scope.addresss.length > 0) {
                     $scope.jsonSdAddress = $scope.addresss[0];
@@ -580,42 +581,19 @@ define(['app/app'], function(app) {
     }]);
 
     //地址编辑模态框
-    app.register.controller('editAddrCtrl', ['$scope', 'addr', '$modalInstance', 'toaster', '$http', 'ShippingAddress', function($scope, addr, $modalInstance, toaster, $http, ShippingAddress){
-        $scope.isSetTop = false;
+    app.register.controller('editAddrDeCtrl', ['$scope', 'addr', '$modalInstance', 'toaster', '$http', 'ShippingAddress', function($scope, addr, $modalInstance, toaster, $http, ShippingAddress){
+        if (addr){
+            $scope.isSetTop = addr.num == 1;
+            $scope.isModify = true;
+        }else {
+            $scope.isSetTop = false;
+            $scope.isModify = false;
+        }
 
         $scope.isSendType = true;
         //验证数据
         $scope.checkeds = {};
-        //验证数据
-        $scope.checkForm = function(name, num) {
-            var size;
-            if(num == 1) {
-                size = document.getElementById("userName").value.length;
-                console.log(size);
-                if (size > 10) {
-                    $scope.userError = true;
-                    return;
-                }
-                $scope.userError = false;
-            } else if(num == 2) {
-                size = document.getElementById("tel").value.length;
-                console.log(size);
-                if (size > 11) {
-                    $scope.telError = true;
-                    return;
-                }
-                $scope.telError = false;
-            } else if(num == 3) {
-                // size = document.getElementById("addr").value.length;
-                size = $scope.address.detailAddress.length;
-                console.log(size);
-                if (size > 30){
-                    $scope.addrError = true;
-                    return;
-                }
-                $scope.addrError = false;
-            }
-        };
+
         $http.get('static/js/prod/data/city.json').success(function(data) {
             $scope.division = data;
             if(addr){
@@ -628,16 +606,75 @@ define(['app/app'], function(app) {
                 $scope.address = addr;
                 $scope.addr = true;
             }
-        }).error(function(e) {
+        }).error(function() {
             toaster.pop('error', '系统错误 ' + '加载城市信息失败');
         });
 
+        $scope.checkForm = function(num) {
+            var size;
+            if(num == 1) {
+                if ($scope.address.name){
+                    size = $scope.address.name.replace(/[^x00-xFF]/g,'**').length;
+                    if (size > 20) {
+                        $scope.userError = true;
+                        return;
+                    }
+                    $scope.userError = false;
+                }
+            } else if(num == 2) {
+                if ($scope.address.tel){
+                    size = $scope.address.tel.replace(/[^x00-xFF]/g,'**').length;
+                    if (size < 8 || size > 11) {
+                        $scope.telError = true;
+                        return;
+                    }
+                    $scope.telError = false;
+                    var telPatt = new RegExp("^[0-9]+$");
+                    if (telPatt.test($scope.address.tel)){
+                        $scope.telPatternError = false;
+                    }else {
+                        $scope.telPatternError = true;
+                    }
+                }
+            } else if(num == 3) {
+                if ($scope.address.detailAddress){
+                    size = $scope.address.detailAddress.replace(/[^x00-xFF]/g,'**').length;
+                    if (size > 60) {
+                        $scope.addrError = true;
+                        return;
+                    }
+                    $scope.addrError = false;
+                }
+            } else if(num == 4) {
+                var emailPatt = new RegExp("^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$");
+                if ($scope.address.email.length > 0 && !emailPatt.test($scope.address.email)){
+                    $scope.emailPatternError = true;
+                }else {
+                    $scope.emailPatternError = false;
+                }
+            }
+        };
+
+
         $scope.save = function () {
             var address = $scope.address;
+
+            if (!address){
+                toaster.pop('error', '请补充未填写的信息');
+                return ;
+            }
+            if (!address.name || !address.province || !address.city || !address.district ||
+                !address.detailAddress || !address.tel){
+                toaster.pop('error', '请补充未填写的信息');
+                return ;
+            }
+            if ($scope.userError || $scope.telError || $scope.addrError || $scope.telPatternError ||
+                $scope.emailPatternError){
+                toaster.pop('error', '请修改红色框内的信息');
+                return ;
+            }
+
             //拼装地区
-            /**
-             * TODO 这里没做校验
-             */
             var strAres = address.province + ',' + address.city + ',' + address.district;
             address.area = strAres;
 

+ 0 - 1
src/main/webapp/resources/js/vendor/controllers/forstore/vendor_logistics_ctrl.js

@@ -364,7 +364,6 @@ define(['app/app', 'calendar'], function (app) {
 				if ($scope.address.name){
 					size = $scope.address.name.replace(/[^x00-xFF]/g,'**').length;
 					if (size > 20) {
-						console.log(size);
 						$scope.userError = true;
 						return;
 					}

+ 10 - 0
src/main/webapp/resources/js/vendor/controllers/forstore/vendor_order_ctrl.js

@@ -853,6 +853,16 @@ define(['app/app'], function (app) {
             $scope.orderTableParams.reload();
         };
 
+        //取消订单状态码
+        $scope.cancelOrderArray = {
+            602: true,
+            603: true,
+            315: true,
+            604: true,
+            605: true,
+            606: true
+        };
+
         //当前页在前段的计算方式
         $scope.frontSegment = function (currentPage, totalElementPages) {
             angular.forEach($scope.pages, function (page) {

+ 2 - 2
src/main/webapp/resources/view/prod/modal/edit-invoice-modal.html

@@ -201,7 +201,7 @@
                             <label for="check-mpy"></label>
                              <span>我已阅读并同意</span>
                      </label>
-                     <a href="help#/nav/19" class="base-line" target="_blank" style=" position: relative;top: -3px;">《发票须知》</a>
+                     <a href="help/helpList/19" class="base-line" target="_blank" style=" position: relative;top: -3px;">《发票须知》</a>
                     </div>
               </div>
               <div class="col-md-offset-3">
@@ -341,7 +341,7 @@
                           <label for="check-mzy"></label>
                           <span>我已阅读并同意</span>
                       </label>
-                      <a href="help#/nav/19">《发票须知》</a>
+                      <a href="help/helpList/19">《发票须知》</a>
                   </div>
               </div>
               <div class="col-md-offset-3">

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

@@ -161,7 +161,7 @@
 	<!--收货地址-->
 	<div class="logistic-content" ng-if="tab=='logistics'">
 		<div class="menu-title row">现有收货地址<span>&nbsp;已保存<em>{{total}}</em>条,还能新增<em>{{canAddTotal-total}}</em>条地址</span></div>
-		<div class="add-log row" ng-if="total < canAddTotal"><button ng-click="addAddress()"><i class="fa fa-plus-square"></i>新增收货地址</button></div>
+		<div class="add-log row" ng-if="total < canAddTotal"><button ng-click="modifyAddress()"><i class="fa fa-plus-square"></i>新增收货地址</button></div>
 		<div class="log-tab">
 			<table class="table">
 				<thead>

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

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

@@ -702,7 +702,7 @@
                                  <div style="display: none;" class="send-button"><a class="send">发送</a></div>
                             </div>
                         </span>
-						<span class="trash" ng-if="order.status == '603'" ng-click="showDeleteOrder(order)"><i class="fa fa-trash"></i></span>
+						<span class="trash" ng-if="cancelOrderArray[order.status]" ng-click="showDeleteOrder(order)"><i class="fa fa-trash"></i></span>
 						<div class="com-del-box" ng-if="order.showDelete">
 							<div class="title">
 								<a ng-click="order.showDelete=false"><i class="fa fa-close fa-lg"></i></a>

+ 3 - 3
src/main/webapp/resources/view/usercenter/forstore/order_pay.html

@@ -387,7 +387,7 @@
 			</ul>
 			<div class="f14 notice margin-top-20 margin-bottom-10 text-center" ng-if="sendAddress.length == 0">您还没有添加收货地址信息,请先新增收货地址信息</div>
 			<div class="pay_add">
-				<a class="add_adr fl" ng-click="addShippingAddress()" ng-if="order.status == 501"><i class="fa fa-plus-square" aria-hidden="true"></i>&nbsp;新增地址</a>
+				<a class="add_adr fl" ng-click="addShippingAddress()" ng-if="order.status == 501 && sendAddress.length < 20"><i class="fa fa-plus-square" aria-hidden="true"></i>&nbsp;新增地址</a>
 				<a class="add_adr fr" ng-click="toggleAddress()" ng-if="sendAddress.length/3 > 1"><b ng-if="expand">隐藏地址</b><b ng-if="!expand">显示地址</b></a>
 			</div>
 		</div>
@@ -507,14 +507,14 @@
 								</p>
 							</span>
 							<span>
-                            	<textarea ng-if="order.status==501" placeholder="可填写产品备注!例如物料编号" ng-model="detail.remark"></textarea>
+                            	<textarea ng-if="order.status==501" placeholder="可填写产品备注!例如物料编号" ng-model="detail.remark" maxlength="200"></textarea>
                         		<em ng-if="order.status!=501" ng-bind="detail.remark" style="color: #333; line-height: 20px; display: inline-block; padding-top: 10px;"></em>
 							</span>
 						</dd>
 						<dd class="oder-remark">
 							<span style="width: 100%">
 								<em>订单备注:</em>
-								<input type="text"  class="form-control" placeholder="请填写订单备注" ng-model="remarkList[details[0].storeid]"/>
+								<input type="text"  class="form-control" placeholder="请填写订单备注" ng-model="remarkList[details[0].storeid]" maxlength="200"/>
 							</span>
 						</dd>
 						<dd class="line60">

+ 2 - 1
src/main/webapp/resources/view/usercenter/modal/collectModel.html

@@ -20,7 +20,8 @@
 </style>
 <div>
 	<div class="modal-header">
-		<h3 class="header-text">收藏成功!</h3>
+		<h3 class="header-text" ng-if="haveAdd">收藏成功!</h3>
+		<h3 class="header-text" ng-if="!haveAdd">请勿重复收藏!</h3>
 	</div>
 	<div class="modal-body">
 		<button type="button" ng-click="cancel()" class="btn" style="margin-left:25px;">关&nbsp;&nbsp;闭</button>

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

@@ -357,7 +357,7 @@
 					<dd class="order-company">
 						<span style="white-space: nowrap; width: 100%; text-align: left; line-height: 50px;">
 							<i style="min-width: 315px; display: inline-block">
-								&nbsp;&nbsp;{{purchase.buyername}} <!--<a ng-if="purchase.pu_buyentername" name="{{purchase.id}}" ng-controller="ChatContactCtrl as chat" ng-click="chat.contactWithOther(purchase.buyPhone, purchase.buyerenuu, chat.UserType.ENTERPRISE)">|{{purchase.pu_buyentername}}</a>-->
+								&nbsp;&nbsp;{{purchase.buyername}}<i ng-if="purchase.buyentername">&nbsp;&nbsp;|&nbsp;&nbsp;{{purchase.buyentername}}</i> <!--<a ng-if="purchase.pu_buyentername" name="{{purchase.id}}" ng-controller="ChatContactCtrl as chat" ng-click="chat.contactWithOther(purchase.buyPhone, purchase.buyerenuu, chat.UserType.ENTERPRISE)"></a>-->
 							</i>
 							<img src="static/img/common/songguo.png" style="margin-right:0; ">
 							<!--<a name="{{purchase.id}}" href="javascript:void(0)" class="contact_btn" ng-controller="ChatContactCtrl as chat" ng-click="chat.contactWithOther(purchase.buyPhone, purchase.buyerenuu, chat.UserType.ENTERPRISE)">联系买家</a>-->
@@ -386,7 +386,7 @@
 							<em  ng-show="!isChange" ng-bind="detail.taxUnitPrice | formateNumber : 6 | currencySysmbol : detail.currencyName" style="color: #333;"></em>
 							<em ng-show="isChange" class="price-style">
 								<em  ng-bind="'' | currencySysmbol : detail.currencyName"></em>
-								<input ng-model="detail.currentTaxUnitPrice" type="number" ng-change="updateTotal()"/>
+								<input ng-model="detail.currentTaxUnitPrice" type="number" ng-change="updateTotal(detail)"/>
 							</em>
 						</span>
 						<span style="width: 10%;" ng-bind="detail.number">100</span>

+ 1 - 1
src/main/webapp/resources/view/vendor/forstore/vendor_delivery.html

@@ -144,7 +144,7 @@
                             <div>
                                 <a ng-if="checkinvoice.status!=404" class="taggle-address edit-address" ng-click="editAddr(jsonSdAddress)"><i class="fa fa-pencil-square-o" aria-hidden="true"></i>&nbsp;编辑</a>
                                 <a ng-if="checkinvoice.status!=404" class="taggle-address" ng-click="taggleAddress(jsonSdAddress)"><i class="fa fa-refresh" aria-hidden="true"></i>&nbsp;切换</a>
-                                <a ng-if="checkinvoice.status!=404" class="taggle-address" ng-click="editAddr()"><i class="fa fa-plus-square" aria-hidden="true"></i>&nbsp;新建</a>
+                                <a ng-if="checkinvoice.status!=404 && total < 20" class="taggle-address" ng-click="editAddr()"><i class="fa fa-plus-square" aria-hidden="true"></i>&nbsp;新建</a>
                             </div>
                         </span>
                     </li>

+ 1 - 1
src/main/webapp/resources/view/vendor/forstore/vendor_order.html

@@ -772,7 +772,7 @@
 								<a ng-click="print(purchase, 'SALESEND_ADMIN')" title="打印出货单"><i class="fa fa-print fa-lg"></i>打印出货单</a>
 							</div>
 						</span>
-						<span class="trash" ng-if="purchase.status=='603' || purchase.status=='606'" ng-click="showDeletePurchase(purchase)"><i class="fa fa-trash"></i></span>
+						<span class="trash" ng-if="cancelOrderArray[purchase.status]" ng-click="showDeletePurchase(purchase)"><i class="fa fa-trash"></i></span>
 						<div class="com-del-box" ng-if="purchase.showDelete">
 							<div class="title">
 								<a ng-click="purchase.showDelete=false"><i class="fa fa-close fa-lg"></i></a>

+ 34 - 0
src/test/java/com/uas/platform/b2c/RegistForMall.java

@@ -0,0 +1,34 @@
+package com.uas.platform.b2c;
+
+import com.alibaba.fastjson.JSON;
+import com.uas.account.entity.UserSpaceDetail;
+import com.uas.sso.common.util.HttpUtil;
+import com.uas.sso.common.util.HttpUtil.ResponseWrap;
+import org.springframework.ui.ModelMap;
+import org.springframework.util.StringUtils;
+
+import java.util.Date;
+
+public class RegistForMall {
+
+	public static void main(String args[]) throws Exception {
+		UserSpaceDetail detail = new UserSpaceDetail();
+		detail.setName("B2B公司研发测试数据-不要购买-wangyuchao");
+		detail.setShortName("B2B公司");
+		detail.setAdminName("余佳");
+		detail.setAdminTel("15989329613");
+		detail.setAdminEmail("yuj@usoftchina.com");
+		detail.setBusinessCode("11122233344456789");
+		detail.setRegisterDate(new Date().getTime());
+		detail.setTel("15989329613");
+		detail.setFax("11-2222222");
+		String url = "http://113.105.74.135:8001/api/userspace";
+		if (!StringUtils.isEmpty(url)) {
+			ResponseWrap res = HttpUtil.doPost(url,
+					new ModelMap("_operate", "registForMall").addAttribute("detail", JSON.toJSON(detail)));
+			System.out.println(res.getContent());
+			if (!res.isSuccess())
+				throw new Exception(res.getContent());
+		}
+	}
+}