Просмотр исходного кода

卖家发货和修改物流调整

hulh 8 лет назад
Родитель
Сommit
ebceadb0f8

+ 10 - 1
src/main/java/com/uas/platform/b2c/logistics/controller/DistributionRuleController.java

@@ -112,8 +112,17 @@ public class DistributionRuleController {
 		return distributionRuleService.ruleMatchArea(method, area, uuid);
 	}
 
+	/**
+	 * 获取已设置生效配送规则的配送方式列表
+	 * @return
+	 */
+	@RequestMapping(value = "/method", method = RequestMethod.GET)
+	public List<Integer> findUsableMethod(){
+		return null;
+	}
+
 	@RequestMapping
-	public DistributionRule getMinRule(){
+	public DistributionRule findMinRule(){
 		return null;
 	}
 }

+ 9 - 0
src/main/java/com/uas/platform/b2c/logistics/dao/DistributionRuleDao.java

@@ -65,4 +65,13 @@ public interface DistributionRuleDao extends JpaSpecificationExecutor<Distributi
 	 * @return
 	 */
 	List<DistributionRule> findByEnuuAndShippingMethodAndActive(Long enuu, Integer shippingMethod, Short active);
+
+	/**
+	 * 根据enuu获取生效的配送方式列表
+	 * @param enuu
+	 * @param active
+	 * @return
+	 */
+	@Query(value = "select distinct d.shippingMethod from DistributionRule d where d.enuu = :enuu and d.active = :active")
+	List<Integer> findShippingMethodByEnuuAndActive(Long enuu, Short active);
 }

+ 6 - 0
src/main/java/com/uas/platform/b2c/logistics/service/DistributionRuleService.java

@@ -71,4 +71,10 @@ public interface DistributionRuleService {
 	 * @return
 	 */
 	List<DistributionRule> ruleMatchArea(Integer method, String area, String uuid);
+
+	/**
+	 * 获取已设置生效配送规则的配送方式列表
+	 * @return
+	 */
+	List<Integer> findUsableShippingMethod();
 }

+ 89 - 9
src/main/java/com/uas/platform/b2c/logistics/service/impl/DistributionRuleServiceImpl.java

@@ -7,6 +7,7 @@ import com.uas.platform.b2c.core.support.SystemSession;
 import com.uas.platform.b2c.logistics.dao.DistributionRuleDao;
 import com.uas.platform.b2c.logistics.model.DistributionRule;
 import com.uas.platform.b2c.logistics.model.RuleQtyArea;
+import com.uas.platform.b2c.logistics.model.RuleQtyFare;
 import com.uas.platform.b2c.logistics.service.DistributionRuleService;
 import com.uas.platform.b2c.prod.store.dao.StoreInDao;
 import com.uas.platform.b2c.prod.store.model.StoreIn;
@@ -60,6 +61,13 @@ public class DistributionRuleServiceImpl implements DistributionRuleService{
 		}, pageInfo);
 	}
 
+	/**
+	 * 保存或修改配送规则
+	 * @param isAdd true-保存,false-另存
+	 * @param isActive
+	 * @param rule
+	 * @return
+	 */
 	@Override
 	public ResultMap saveDistributionRule(Boolean isAdd, Boolean isActive, DistributionRule rule) {
 		if (rule.getShippingMethod() == null){
@@ -74,7 +82,7 @@ public class DistributionRuleServiceImpl implements DistributionRuleService{
 		if (rule.getFareType() == 2 && CollectionUtils.isEmpty(rule.getFares())){
 			return new ResultMap(CodeType.NO_INFO, "请完善计费方式");
 		}
-		if (rule.getId() == null){
+		if (rule.getId() == null){ //新增配送规则,初始化数据
 			Long uu = SystemSession.getUser().getUserUU();
 			Long enuu = SystemSession.getUser().getEnterprise().getUu();
 			rule.setUseruu(uu);
@@ -91,7 +99,7 @@ public class DistributionRuleServiceImpl implements DistributionRuleService{
 		}else {
 			rule.setActive(ShortConstant.NO_SHORT);
 		}
-		if (!isAdd){
+		if (!isAdd){ //若为另存为,则将主键id设为空
 			if (rule.getId() != null){
 				rule.setId(null);
 			}
@@ -137,6 +145,11 @@ public class DistributionRuleServiceImpl implements DistributionRuleService{
 		return ResultMap.success(null);
 	}
 
+	/**
+	 * 修改,排序已有配送规则列表,本配送规则不参与排序,空出num位置
+	 * @param id
+	 * @param num
+	 */
 	public void sortRule(Long id, int num){
 		Long enuu = SystemSession.getUser().getEnterprise().getUu();
 		List<DistributionRule> ruleList = distributionRuleDao.findAllByEnuu(enuu);
@@ -153,15 +166,17 @@ public class DistributionRuleServiceImpl implements DistributionRuleService{
 		distributionRuleDao.save(ruleList);
 	}
 
+	/**
+	 * 新增,排序已有配送规则列表,空出num位置
+	 * @param num
+	 */
 	public void sortRule(int num){
-//		System.out.println("num=" + num);
 		Long enuu = SystemSession.getUser().getEnterprise().getUu();
 		List<DistributionRule> ruleList = distributionRuleDao.findAllByEnuu(enuu);
 		int start = 1;
 		for (DistributionRule rule : ruleList){
 			if (start == num){
 				start++;
-				System.out.println("start=" + start);
 			}
 			rule.setNum(start++);
 		}
@@ -187,6 +202,10 @@ public class DistributionRuleServiceImpl implements DistributionRuleService{
 		return distributionRuleDao.findAllRuleNameByEnuu(enuu);
 	}
 
+	/**
+	 * 查询已设置配送规则的数量
+	 * @return
+	 */
 	@Override
 	public ResultMap findCountRule() {
 		Long enuu = SystemSession.getUser().getEnterprise().getUu();
@@ -194,16 +213,21 @@ public class DistributionRuleServiceImpl implements DistributionRuleService{
 		return ResultMap.success(count);
 	}
 
+	/**
+	 * 根据配送规则名称查询是否已存在
+	 * @param id
+	 * @param ruleName 配送规则名称
+	 * @param newSave 是否为另存,true-另存 false-保存
+	 * @return
+	 */
 	@Override
 	public ResultMap containsName(Long id, String ruleName, Boolean newSave) {
 		Long enuu = SystemSession.getUser().getEnterprise().getUu();
 		Boolean repeat = null;
-//		System.out.println("id=" + id);
 		if (id != null){
 			//修改配送规则情况,分保存和另存为两种
 			if (newSave){ //另存为
 				int count = distributionRuleDao.findCountRuleName(enuu, ruleName);
-//				System.out.println("count=" + count);
 				if (count != 0){
 					repeat = true;
 				}else {
@@ -215,7 +239,6 @@ public class DistributionRuleServiceImpl implements DistributionRuleService{
 					repeat = false;
 				}else {
 					int count = distributionRuleDao.findCountRuleName(enuu, ruleName);
-//					System.out.println("count=" + count);
 					if (count != 0){
 						repeat = true;
 					}else {
@@ -225,7 +248,6 @@ public class DistributionRuleServiceImpl implements DistributionRuleService{
 			}
 		}else { //新增配送规则情况
 			int count = distributionRuleDao.findCountRuleName(enuu, ruleName);
-//			System.out.println("count=" + count);
 			if (count != 0){
 				repeat = true;
 			}else {
@@ -235,12 +257,25 @@ public class DistributionRuleServiceImpl implements DistributionRuleService{
 		return ResultMap.success(repeat);
 	}
 
+	@Override
+	public List<Integer> findUsableShippingMethod() {
+		Long enuu = SystemSession.getUser().getEnterprise().getUu();
+		return distributionRuleDao.findShippingMethodByEnuuAndActive(enuu, ShortConstant.YES_SHORT);
+	}
+
+	/**
+	 * 根据配送方式获取匹配地区的配送规则列表
+	 * @param method
+	 * @param area
+	 * @param uuid
+	 * @return
+	 */
 	@Override
 	public List<DistributionRule> ruleMatchArea(Integer method, String area, String uuid) {
 		StoreIn store = storeInDao.findByUuid(uuid);
 
 		List<DistributionRule> resultList = new ArrayList<>();
-		// 根据配送方式找出所有的配送规则
+		// 根据配送方式找出所有生效的配送规则
 		List<DistributionRule> methodList = distributionRuleDao.findByEnuuAndShippingMethodAndActive(store.getEnUU(), method, ShortConstant.YES_SHORT);
 
 		for (DistributionRule rule : methodList){
@@ -254,6 +289,51 @@ public class DistributionRuleServiceImpl implements DistributionRuleService{
 		return resultList;
 	}
 
+	/**
+	 * 获取运费最小的配送规则
+	 * @param price
+	 * @return
+	 */
+	public DistributionRule getRuleOInMinFare(Double price){
+		//获取匹配地区的配送规则列表
+		List<DistributionRule> matchList = null;
+		DistributionRule minRule = null; //最少运费的配送规则
+		Double minFare = getFareOfRule(matchList.get(0), price);
+		for (int i = 1; i<matchList.size(); i++){
+			Double fare = getFareOfRule(matchList.get(i), price);
+			if (fare < minFare){
+				minRule = matchList.get(i);
+				minFare = fare;
+			}
+		}
+		return minRule;
+	}
+
+	/**
+	 * 获取指定配送规则的运费
+	 * @param rule
+	 * @return
+	 */
+	public Double getFareOfRule(DistributionRule rule, Double price){
+		Double needFare = null;
+		if (rule.getFareType() == 1){
+			needFare = rule.getUniformPrice();
+		}else {
+			for (RuleQtyFare fare : rule.getFares()){
+				if (fare.getStart() <= price){
+					if (fare.getEnd() != null){
+						if (fare.getEnd() > price){
+							needFare = fare.getFare();
+						}
+					}else {
+						needFare = fare.getFare();
+					}
+				}
+			}
+		}
+		return needFare;
+	}
+
 	/**
 	 * 根据分段地区集合转化为可用的Map集合
 	 *

+ 57 - 52
src/main/webapp/resources/js/vendor/controllers/forstore/vendor_delivery_ctrl.js

@@ -52,20 +52,17 @@ define(['app/app'], function(app) {
         $scope.findAllKdnList();
 
         $scope.showText = function (data) {
-            $scope.logistics.companyName = data.companyName;
-            $scope.companyObject = data;
+            $scope.logistics.companyName = data;
             $scope.showCompanyName = false;
-            // console.log($scope.logistics.companyName);
         };
 
-        $scope.showCompanyName = false;
+        // $scope.showCompanyName = false;
 
         $scope.changeShowLogistics = function () {
             // matchArray();
-            $scope.matchData = true;
-            $scope.resultList = $scope.companyNameList;
+            // $scope.matchData = true;
+            // $scope.resultList = $scope.companyNameList;
             $scope.showCompanyName = !$scope.showCompanyName;
-            // document.getElementById("addr").value = "";
         };
 
         /**
@@ -86,17 +83,17 @@ define(['app/app'], function(app) {
             }
         };
 
-        $scope.textChange = function () {
-            // console.log( $scope.logistics.companyName);
-            initIndex();
-            var dom = document.getElementById("addr");
-            matchArray();
-            if (dom.value) {
-                var content = dom.value;
-                $scope.containsAttr(content);
-            }
-            $scope.showCompanyName = true;
-        };
+        // $scope.textChange = function () {
+        //     // console.log( $scope.logistics.companyName);
+        //     initIndex();
+        //     var dom = document.getElementById("addr");
+        //     matchArray();
+        //     if (dom.value) {
+        //         var content = dom.value;
+        //         $scope.containsAttr(content);
+        //     }
+        //     $scope.showCompanyName = true;
+        // };
 
         /**
          * 判断快递鸟是否包含输入的快递
@@ -283,17 +280,20 @@ define(['app/app'], function(app) {
         };
 
         // 搜索框获得焦点,显示联想框
-        $scope.getFocus = function() {
-            // $scope.showCompanyName = true;
+        $scope.getItemFocus = function() {
+            $scope.showCompanyName = true;
             initIndex();
-            // if(!$scope.logistics.companyName)
-            //     $scope.logistics.companyName = '';
         };
 
-        $scope.onBlur = function () {
-            setTimeout(function () {
-                $scope.showCompanyName = false;
-            }, 120);
+        $scope.onItemBlur = function () {
+            if ($scope.time){
+                clearTimeout($scope.time);
+            }
+            $scope.time = setTimeout(function () {
+                $scope.$apply(function () {
+                    $scope.showCompanyName = false;
+                });
+            }, 200);
         };
 
         //$scope.downNumber = 0;
@@ -303,10 +303,10 @@ define(['app/app'], function(app) {
             if ($scope.showCompanyName){
                 if(event.keyCode == 40) { //监听到按下键
                     $scope.selectIndex ++;
-                    if ($scope.downIndex == 10){
+                    if ($scope.downIndex == 5){
                         dom.scrollTop += 23;
                     }
-                    if ($scope.downIndex <= 9){
+                    if ($scope.downIndex <= 4){
                         $scope.downIndex++;
                     }
                     if($scope.selectIndex >= $scope.data_list.length){
@@ -327,7 +327,7 @@ define(['app/app'], function(app) {
                     if($scope.selectIndex < 0){
                         $scope.selectIndex = $scope.data_list.length - 1;
                         dom.scrollTop = 2400;
-                        $scope.downIndex = 10;
+                        $scope.downIndex = 5;
                     }
                     $scope.logistics.companyName = $scope.data_list[$scope.selectIndex].companyName;
                     // $scope.containsAttr($scope.logistics.companyName);
@@ -463,6 +463,11 @@ define(['app/app'], function(app) {
                     toaster.pop('error', '注意', '请选择物流公司');
                     return false;
                 }
+                console.log($scope.logistics.companyName);
+                if ($scope.logistics.companyName == '请选择物流公司'){
+                    toaster.pop('error', '注意', '请选择物流公司');
+                    return false;
+                }
                 if (!$scope.logistics.number){
                     toaster.pop('error', '注意', '请填写物流单号');
                     return false;
@@ -513,29 +518,29 @@ define(['app/app'], function(app) {
         };
 
 
-        document.onclick = function (event) {
-            var element = event.srcElement;
-            var elementName =  element.getAttribute("name");
-            $scope.$apply(function () {
-                    var isThisTag = false;
-                    if(elementName && "companyName" == elementName) {
-                        isThisTag = true;
-                    }
-                    if(!isThisTag) {
-                        var parentElement = element.parentElement;
-                        while (parentElement && parentElement.tagName && parentElement.tagName != 'BODY') {
-                            var parentElementName =  parentElement.getAttribute("name");
-                            if(parentElementName && "companyName" == parentElementName) {
-                                isThisTag = true;
-                            }
-                            parentElement = parentElement.parentElement;
-                        }
-                    }
-                    if(!isThisTag) {
-                        $scope.showCompanyName = false;
-                    }
-            });
-        };
+        // document.onclick = function (event) {
+        //     var element = event.srcElement;
+        //     var elementName =  element.getAttribute("name");
+        //     $scope.$apply(function () {
+        //             var isThisTag = false;
+        //             if(elementName && "companyName" == elementName) {
+        //                 isThisTag = true;
+        //             }
+        //             if(!isThisTag) {
+        //                 var parentElement = element.parentElement;
+        //                 while (parentElement && parentElement.tagName && parentElement.tagName != 'BODY') {
+        //                     var parentElementName =  parentElement.getAttribute("name");
+        //                     if(parentElementName && "companyName" == parentElementName) {
+        //                         isThisTag = true;
+        //                     }
+        //                     parentElement = parentElement.parentElement;
+        //                 }
+        //             }
+        //             if(!isThisTag) {
+        //                 $scope.showCompanyName = false;
+        //             }
+        //     });
+        // };
 
         $scope.cancle = function(invoice) {
             invoice.deliveryShow = 'hide';

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

@@ -239,6 +239,10 @@ define(['app/app'], function (app) {
                     toaster.pop("error", "请选择物流公司");
                     return;
                 }
+                if ($scope.logistics.companyName == '请选择物流公司'){
+                    toaster.pop('error', '注意', '请选择物流公司');
+                    return false;
+                }
                 if (!$scope.logistics.number) {
                     toaster.pop("error", "请填写物流单号");
                     return;

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

@@ -404,7 +404,7 @@
 					<div ng-class="{'limit-3': !open}" style="width: 100%; margin: 0 auto; overflow: hidden;">
 						<dd class="oder_l" ng-repeat="detail in purchase.purchaseDetails">
 						<span class="wd02">
-							<a href="store/{{detail.storeid}}/{{::detail.batchCode}}" target="_blank"><img ng-src="{{detail.img ? detail.img : 'static/img/user/images/pro02.jpg'}}"/></a>
+							<a href="store/{{detail.storeid}}/{{::detail.batchCode}}" target="_blank"><img ng-src="{{detail.img ? detail.img : 'static/img/store/common/default.png'}}"/></a>
 							<p class="style01" style="margin-top: 10px;">类目:
 								<a ng-bind="detail.kiName" href="store/{{detail.storeid}}/{{::detail.kindUuid}}" title="{{detail.kiName}}" target="_blank"></a>
 							</p>

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

@@ -77,7 +77,7 @@
     .sell_oder .sure_oder .oder_xq_list dl span .dropdown-menu{
         top: 95%;
         line-height: 23px;
-        max-height: 240px;
+        max-height: 120px;
         overflow-y: auto;
         width: 190px;
         display: block;
@@ -504,6 +504,9 @@
     .com_log_list ul li.active{
         background-position: -283px 0;
     }
+    .form-control[readonly]{
+        background-color: #ffffff;
+    }
 </style>
 <div class="user_right fr">
     <!--订单发货-->
@@ -575,7 +578,7 @@
                     <div ng-class="{'limit-3': !open}" style="width: 100%; margin: 0 auto; overflow: hidden;">
                         <dd class="oder_l" ng-repeat="detail in checkinvoice.invoiceFPurchaseDetails">
 						<span class="wd02">
-							<a href="store/{{detail.storeid}}/{{::detail.batchCode}}" target="_blank"><img ng-src="{{detail.img ? detail.img : 'static/img/user/images/pro02.jpg'}}"/></a>
+							<a href="store/{{detail.storeid}}/{{::detail.batchCode}}" target="_blank"><img ng-src="{{detail.img ? detail.img : 'static/img/store/common/default.png'}}"/></a>
 							<p class="style01" style="margin-top: 10px;">类目:
 								<a ng-bind="detail.kiName" href="store/{{detail.storeid}}/{{::detail.kindUuid}}" title="{{detail.kiName}}" target="_blank"></a>
 							</p>
@@ -662,19 +665,20 @@
                             地址:<em>广东省  深圳市  南山区  科技园英唐大厦6楼 优软商城科技园英唐大厦6楼 优软商城    </em>
                         </div>
                         <div ng-if="checkinvoice.sendType==1301">
-                            <span style="width: 10%; margin-left: 22px;"> 物流公司 :&nbsp;</span>
+                            <span style="width: 10%; margin-left: 22px;">物流公司 :&nbsp;</span>
                             <span class="input-ul">
-                            <input id="addr" type="text" class="form-control" ng-change="textChange()" ng-blur="onBlur()" ng-focus="getFocus()" ng-keydown="onKeyup()" ng-model="logistics.companyName"  placeholder="请输入物流公司" autocomplete="off"  maxlength="15">
-                            <em name="companyName" ng-click="changeShowLogistics()" class="btn-position"><i class="fa fa-caret-down" aria-hidden="true"></i></em>
-                            <ul id="ulContent" ng-if="showCompanyName" class="dropdown-menu">
-                            <li ng-click="showText(data)" ng-repeat="data in data_list" ng-class="{'active': $index==selectIndex}" ng-bind="data.companyName"></li>
-                            </ul>
-                        </span>
+                                <input id="addr" style="border: #5078cb 1px solid;" type="text" class="form-control" ng-focus="getItemFocus()" ng-blur="onItemBlur()" ng-keydown="onKeyup()" ng-model="logistics.companyName" placeholder="请选择物流公司" autocomplete="off" maxlength="15" readonly="readonly">
+                                <em name="companyName" ng-click="changeShowLogistics()" class="btn-position"><i class="fa fa-caret-down" aria-hidden="true"></i></em>
+                                <ul id="ulContent" ng-if="showCompanyName" class="dropdown-menu">
+                                    <li ng-click="showText('请选择物流公司')">请选择物流公司</li>
+                                    <li ng-click="showText(data.companyName)" ng-repeat="data in data_list" ng-class="{'active': $index==selectIndex}" ng-bind="data.companyName"></li>
+                                </ul>
+                            </span>
                             <span  style="width: 10%;"> 物流单号 :&nbsp;</span>
                             <span style="margin-right: 20px; width: 160px; float: left;">
                             <form name="myForm">
                                 <!--ng-pattern="/^[A-Za-z0-9]+$/"-->
-                            <input name="number" type="text" class="form-control" ng-model="logistics.number" placeholder="请输入物流单号" maxlength="20"/>
+                            <input name="number" type="text" class="form-control" ng-model="logistics.number" placeholder="请输入物流单号" maxlength="20" autocomplete="off"/>
                             </form>
                         </span>
                             <em ng-if="companyObject.isKdn==0" style="color: #b0b0b0;

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

@@ -720,6 +720,9 @@
 		background: #5078cb;
 		color: #fff;
 	}
+	.form-control[readonly]{
+		background-color: #ffffff;
+	}
 </style>
 <div class="user_right fr">
 	<!--订单中心-->
@@ -938,9 +941,10 @@
 										<div class="row">配送方式: <em>{{deliveryMethod[purchase.sendType]}}</em></div>
 										<div class="row">物流公司:
 											<em>
-												<input type="text" class="form-control" ng-model="logistics.companyName" ng-focus="onFocus()" ng-blur="onBlur()"/>
+												<input type="text" style="border: #5078cb 1px solid;" class="form-control" ng-model="logistics.companyName" ng-focus="onFocus()" ng-blur="onBlur()" readonly="readonly"/>
 												<em name="companyName" class="btn-position" ng-click="showName()"><i class="fa fa-caret-down"></i></em>
 												<ul class="dropdown-menu" ng-class="{'active': showNameUl}">
+													<li ng-click="showText('请选择物流公司')">请选择物流公司</li>
                             						<li ng-click="showText(data.companyName)" ng-repeat="data in data_list" ng-bind="data.companyName"></li>
                             					</ul>
 											</em>