Преглед изворни кода

配送规则对应的java类

hulh пре 8 година
родитељ
комит
79dd91eae5

+ 75 - 0
src/main/java/com/uas/platform/b2c/logistics/controller/DistributionRuleController.java

@@ -0,0 +1,75 @@
+package com.uas.platform.b2c.logistics.controller;
+
+import com.uas.platform.b2c.core.utils.FastjsonUtils;
+import com.uas.platform.b2c.logistics.model.DistributionRule;
+import com.uas.platform.b2c.logistics.service.DistributionRuleService;
+import com.uas.platform.b2c.trade.support.ResultMap;
+import com.uas.platform.core.model.PageParams;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.web.bind.annotation.*;
+import java.util.List;
+
+/**
+ * Created by hulh on 2017/8/28.
+ * 配送规则controller
+ */
+@RestController
+@RequestMapping(value = "trade/distributionRule")
+public class DistributionRuleController {
+
+	@Autowired
+	private DistributionRuleService distributionRuleService;
+
+	/**
+	 * 分页获取配送规则
+	 * @param params
+	 * @return
+	 */
+	@RequestMapping(value = "/page", method = RequestMethod.GET)
+	public Page findPageRule(PageParams params){
+		return distributionRuleService.findPageRule(params);
+	}
+
+	/**
+	 * 根据id删除指定配送规则
+	 * @param id
+	 * @return
+	 */
+	@RequestMapping(value = "/delete/{id}", method = RequestMethod.PUT)
+	public void deleteOne(@PathVariable("id") Long id){
+		distributionRuleService.deleteOne(id);
+	}
+
+	/**
+	 * 保存配送规则
+	 * @param isActive
+	 * @param json
+	 * @param isAdd true-新增,false-另存
+	 * @return
+	 */
+	@RequestMapping(value = "/save", method = RequestMethod.POST)
+	public DistributionRule saveRule(Boolean isAdd, Boolean isActive, @RequestBody String json){
+		System.out.println(json + "=" + isActive + "=" + isAdd);
+		DistributionRule rule = FastjsonUtils.fromJson(json, DistributionRule.class);
+		return distributionRuleService.saveDistributionRule(isAdd, isActive, rule);
+	}
+
+	/**
+	 * 返回所有的配送规则名称
+	 * @return
+	 */
+	@RequestMapping(value = "/ruleName", method = RequestMethod.GET)
+	public List<String> findAllRuleName(){
+		return distributionRuleService.findAllRuleName();
+	}
+
+	/**
+	 * 返回当前enuu配送规则总数
+	 * @return
+	 */
+	@RequestMapping(value = "/count", method = RequestMethod.GET)
+	public ResultMap findRuleCount(){
+		return distributionRuleService.findCountRule();
+	}
+}

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

@@ -0,0 +1,51 @@
+package com.uas.platform.b2c.logistics.dao;
+
+import com.uas.platform.b2c.logistics.model.DistributionRule;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Modifying;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+/**
+ * Created by hulh on 2017/8/28.
+ */
+public interface DistributionRuleDao extends JpaSpecificationExecutor<DistributionRule>, JpaRepository<DistributionRule, Long> {
+
+	/**
+	 * 根据指定id删除配送规则
+	 * @param id
+	 * @return
+	 */
+	@Transactional
+	@Modifying
+	@Query(value = "delete from DistributionRule d where d.id=:id")
+	void deleteOneById(@Param("id") Long id);
+
+	/**
+	 * 根据enuu查找配送规则总数
+	 * @param enuu
+	 * @return
+	 */
+	@Query(value = "select count(1) from DistributionRule d where d.enuu = :enuu")
+	int findCountByEnuu(@Param("enuu") Long enuu);
+
+	/**
+	 * 根据enuu获取所有的配送规则
+	 * @param enuu
+	 * @return
+	 */
+	@Query(value = "select d from DistributionRule d where d.enuu = :enuu order by d.num asc")
+	List<DistributionRule> findAllByEnuu(@Param("enuu") Long enuu);
+
+	/**
+	 * 根据enuu获取所有的配送规则名称
+	 * @param enuu
+	 * @return
+	 */
+	@Query(value = "select d.ruleName from DistributionRule d where d.enuu = :enuu")
+	List<String> findAllRuleNameByEnuu(@Param("enuu") Long enuu);
+}

+ 277 - 0
src/main/java/com/uas/platform/b2c/logistics/model/DistributionRule.java

@@ -0,0 +1,277 @@
+package com.uas.platform.b2c.logistics.model;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.uas.platform.b2c.core.utils.FastjsonUtils;
+import org.apache.commons.collections.CollectionUtils;
+import org.codehaus.jackson.annotate.JsonIgnore;
+import org.springframework.util.StringUtils;
+
+import javax.persistence.*;
+import java.util.List;
+
+/**
+ * Created by hulh on 2017/8/28.
+ * 配送规则
+ */
+@Entity
+@Table(name = "logistics$distributor_rule")
+public class DistributionRule {
+
+	/**
+	 * 主键id
+	 */
+	@Id
+	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "logistics$distributor_gen")
+	@SequenceGenerator(name = "logistics$distributor_gen", sequenceName = "logistics$distributor_seq", allocationSize = 1)
+	@Column(name = "rule_id")
+	private Long id;
+
+	/**
+	 * 用户uu
+	 */
+	@Column(name = "rule_uu")
+	private Long useruu;
+
+	/**
+	 * 企业enuu
+	 */
+	@Column(name = "rule_enuu")
+	private Long enuu;
+
+	/**
+	 * 配送规则名称
+	 */
+	@Column(name = "rule_name")
+	private String ruleName;
+
+	/**
+	 * 适用店铺 1101-自营,1102-寄售
+	 */
+	@Column(name = "rule_store_type")
+	private Integer storeType;
+
+	/**
+	 * 适用类型 1201-普通订单,1202-预售订单,1203-发票
+	 */
+	@Column(name = "rule_order_type")
+	private String orderType;
+
+	/**
+	 * 适用用户 1301-所有用户
+	 * TODO 目前暂时展示所有用户
+	 */
+	@Column(name = "rule_user_type")
+	private Integer userType;
+
+	/**
+	 * 配送方式
+	 * 1301-第三方配送,1302-卖家配送,1303-上门自提
+	 */
+	@Column(name = "rule_method")
+	private Integer shippingMethod;
+
+	/**
+	 * 是否生效,1-生效,0-不生效
+	 */
+	@Column(name = "rule_active")
+	private Short active;
+
+	/**
+	 * 配送规则排序
+	 */
+	@Column(name = "rule_num")
+	private Integer num;
+
+	/**
+	 * 币别 RMB-USD
+	 */
+	@Column(name = "rule_currency")
+	private String currencyName;
+
+	/**
+	 * 计费方式
+	 * 1-统一规定运费,2-按总金额计算
+	 */
+	@Column(name = "rule_fare_type")
+	private Short fareType;
+
+	/**
+	 * 分段运费(JSON串)
+	 */
+	@Column(name = "rule_qtyFare")
+	private String qtyFare;
+
+	/**
+	 * 统一运费
+	 */
+	@Column(name = "rule_uniform_price")
+	private Double uniformPrice;
+
+	/**
+	 * 分段运费
+	 */
+	@Transient
+	private List<RuleQtyFare> fares;
+
+	/**
+	 * 分段地区(JSON串)
+	 */
+	@Column(name = "rule_qtyArea")
+	private String qtyArea;
+
+	/**
+	 * 分段地区(list)
+	 */
+	@Transient
+	private List<RuleQtyArea> areas;
+
+	/**
+	 * TODO 是否需要记录计算说明文案
+	 */
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	public Long getUseruu() {
+		return useruu;
+	}
+
+	public void setUseruu(Long useruu) {
+		this.useruu = useruu;
+	}
+
+	public Long getEnuu() {
+		return enuu;
+	}
+
+	public void setEnuu(Long enuu) {
+		this.enuu = enuu;
+	}
+
+	public Integer getStoreType() {
+		return storeType;
+	}
+
+	public void setStoreType(Integer storeType) {
+		this.storeType = storeType;
+	}
+
+	public String getOrderType() {
+		return orderType;
+	}
+
+	public void setOrderType(String orderType) {
+		this.orderType = orderType;
+	}
+
+	public Integer getUserType() {
+		return userType;
+	}
+
+	public void setUserType(Integer userType) {
+		this.userType = userType;
+	}
+
+	public Integer getShippingMethod() {
+		return shippingMethod;
+	}
+
+	public void setShippingMethod(Integer shippingMethod) {
+		this.shippingMethod = shippingMethod;
+	}
+
+	public Short getActive() {
+		return active;
+	}
+
+	public void setActive(Short active) {
+		this.active = active;
+	}
+
+	public Short getFareType() {
+		return fareType;
+	}
+
+	public void setFareType(Short fareType) {
+		this.fareType = fareType;
+	}
+
+	@JSONField(serialize = false)
+	@JsonIgnore
+	public String getQtyFare() {
+		return qtyFare;
+	}
+
+	public void setQtyFare(String qtyFare) {
+		this.qtyFare = qtyFare;
+	}
+
+	public Double getUniformPrice() {
+		return uniformPrice;
+	}
+
+	public void setUniformPrice(Double uniformPrice) {
+		this.uniformPrice = uniformPrice;
+	}
+
+
+	public List<RuleQtyFare> getFares() {
+		if (CollectionUtils.isEmpty(fares) && StringUtils.hasText(qtyFare)) {
+			return FastjsonUtils.fromJsonArray(qtyFare, RuleQtyFare.class);
+		} else {
+			return fares;
+		}
+	}
+
+	public void setFares(List<RuleQtyFare> fares) {
+		this.fares = fares;
+	}
+
+	public String getQtyArea() {
+		return qtyArea;
+	}
+
+	public void setQtyArea(String qtyArea) {
+		this.qtyArea = qtyArea;
+	}
+
+	public List<RuleQtyArea> getAreas() {
+		if (CollectionUtils.isEmpty(areas) && StringUtils.hasText(qtyArea)) {
+			return FastjsonUtils.fromJsonArray(qtyArea, RuleQtyArea.class);
+		} else {
+			return areas;
+		}
+	}
+
+	public void setAreas(List<RuleQtyArea> areas) {
+		this.areas = areas;
+	}
+
+	public String getRuleName() {
+		return ruleName;
+	}
+
+	public void setRuleName(String ruleName) {
+		this.ruleName = ruleName;
+	}
+
+	public Integer getNum() {
+		return num;
+	}
+
+	public void setNum(Integer num) {
+		this.num = num;
+	}
+
+	public String getCurrencyName() {
+		return currencyName;
+	}
+
+	public void setCurrencyName(String currencyName) {
+		this.currencyName = currencyName;
+	}
+}

+ 44 - 0
src/main/java/com/uas/platform/b2c/logistics/model/RuleQtyArea.java

@@ -0,0 +1,44 @@
+package com.uas.platform.b2c.logistics.model;
+
+/**
+ * Created by hulh on 2017/8/28.
+ * 分段地区
+ */
+public class RuleQtyArea {
+	/**
+	 * 地区:省
+	 */
+	private String province;
+	/**
+	 * 地区:市
+	 */
+	private String city;
+	/**
+	 * 地区:区
+	 */
+	private String area;
+
+	public String getProvince() {
+		return province;
+	}
+
+	public void setProvince(String province) {
+		this.province = province;
+	}
+
+	public String getCity() {
+		return city;
+	}
+
+	public void setCity(String city) {
+		this.city = city;
+	}
+
+	public String getArea() {
+		return area;
+	}
+
+	public void setArea(String area) {
+		this.area = area;
+	}
+}

+ 24 - 0
src/main/java/com/uas/platform/b2c/logistics/model/RuleQtyFare.java

@@ -0,0 +1,24 @@
+package com.uas.platform.b2c.logistics.model;
+
+/**
+ * Created by hulh on 2017/8/28.
+ * 分段运费
+ */
+public class RuleQtyFare {
+	/**
+	 * 分段开始
+	 */
+	private Double start;
+	/**
+	 * 分段结束
+	 */
+	private Double end;
+	/**
+	 * 分段费用
+	 */
+	private Double fare;
+	/**
+	 * 分段币别
+	 */
+	private String currency;
+}

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

@@ -0,0 +1,46 @@
+package com.uas.platform.b2c.logistics.service;
+
+import com.uas.platform.b2c.logistics.model.DistributionRule;
+import com.uas.platform.b2c.trade.support.ResultMap;
+import com.uas.platform.core.model.PageParams;
+import org.springframework.data.domain.Page;
+
+import java.util.List;
+
+/**
+ * Created by hulh on 2017/8/28.
+ * 配送规则service
+ */
+public interface DistributionRuleService {
+
+	/**
+	 * 分页获取配送规则
+	 * @param params
+	 * @return
+	 */
+	Page<DistributionRule> findPageRule(PageParams params);
+
+	/**
+	 * 保存配送规则
+	 * @param isAdd
+	 * @param isActive
+	 * @param rule
+	 * @return
+	 */
+	DistributionRule saveDistributionRule(Boolean isAdd, Boolean isActive, DistributionRule rule);
+
+	/**
+	 * 根据id删除指定配送规则
+	 * @param id
+	 */
+	void deleteOne(Long id);
+
+	/**
+	 * 返回所有的配送规则名称
+	 * @return
+	 */
+	List<String> findAllRuleName();
+
+	ResultMap findCountRule();
+
+}

+ 140 - 0
src/main/java/com/uas/platform/b2c/logistics/service/impl/DistributionRuleServiceImpl.java

@@ -0,0 +1,140 @@
+package com.uas.platform.b2c.logistics.service.impl;
+
+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.service.DistributionRuleService;
+import com.uas.platform.b2c.trade.support.ResultMap;
+import com.uas.platform.core.model.PageInfo;
+import com.uas.platform.core.model.PageParams;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.jpa.domain.Specification;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
+import java.util.List;
+
+/**
+ * Created by hulh on 2017/8/28.
+ * 配送规则实现类
+ */
+@Service
+@Transactional
+public class DistributionRuleServiceImpl implements DistributionRuleService{
+
+	@Autowired
+	private DistributionRuleDao distributionRuleDao;
+
+	@Override
+	public Page<DistributionRule> findPageRule(PageParams params) {
+		final PageInfo pageInfo = new PageInfo(params);
+		pageInfo.filter("enuu", SystemSession.getUser().getEnterprise().getUu());
+		return distributionRuleDao.findAll(new Specification<DistributionRule>() {
+			@Override
+			public Predicate toPredicate(Root<DistributionRule> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
+				query.where(pageInfo.getPredicates(root, query, cb));
+				return null;
+			}
+		}, pageInfo);
+	}
+
+	@Override
+	public DistributionRule saveDistributionRule(Boolean isAdd, Boolean isActive, DistributionRule rule) {
+		if (rule.getId() == null){
+			Long uu = SystemSession.getUser().getUserUU();
+			Long enuu = SystemSession.getUser().getEnterprise().getUu();
+			rule.setUseruu(uu);
+			rule.setEnuu(enuu);
+			/**
+			 * TODO 默认为自营的,后期再加入判断
+			 */
+			rule.setStoreType(1101);
+		}
+		if (isActive){
+			rule.setActive((short)1);
+		}else {
+			rule.setActive((short)0);
+		}
+		if (!isAdd){
+			if (rule.getId() != null){
+				rule.setId(null);
+			}
+		}
+		int count = distributionRuleDao.findCountByEnuu(rule.getEnuu());
+		System.out.println(rule.getNum());
+		System.out.println("count=" + count);
+		int num = count == 0 ? 1 : ++count;
+		System.out.println(num);
+		if (rule.getId() == null){
+			if (rule.getNum() == null){
+				rule.setNum(num);
+			}else {
+				if (rule.getNum() < num){
+					sortRule(rule.getNum());
+				}else {
+					rule.setNum(num);
+				}
+			}
+		}else {
+			DistributionRule oldRule = distributionRuleDao.findOne(rule.getId());
+			if (rule.getNum() < oldRule.getNum()){
+				sortRule(rule.getId(), rule.getNum());
+			}
+		}
+		return distributionRuleDao.save(rule);
+	}
+
+	public void sortRule(Long id, int num){
+		Long enuu = SystemSession.getUser().getEnterprise().getUu();
+		List<DistributionRule> ruleList = distributionRuleDao.findAllByEnuu(enuu);
+		int start = 1;
+		for (DistributionRule rule : ruleList){
+			if (rule.getId() != id){
+				if (start == num){
+					start++;
+					System.out.println("start=" + start);
+				}
+				rule.setNum(start++);
+			}
+		}
+		distributionRuleDao.save(ruleList);
+	}
+
+	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++);
+		}
+		distributionRuleDao.save(ruleList);
+	}
+
+	@Transactional
+	@Override
+	public void deleteOne(Long id) {
+		distributionRuleDao.deleteOneById(id);
+	}
+
+	@Override
+	public List<String> findAllRuleName() {
+		Long enuu = SystemSession.getUser().getEnterprise().getUu();
+		return distributionRuleDao.findAllRuleNameByEnuu(enuu);
+	}
+
+	@Override
+	public ResultMap findCountRule() {
+		Long enuu = SystemSession.getUser().getEnterprise().getUu();
+		int count = distributionRuleDao.findCountByEnuu(enuu);
+		return ResultMap.success(count);
+	}
+}

+ 24 - 0
src/main/webapp/resources/js/common/query/logisticsPort.js

@@ -77,5 +77,29 @@ define([ 'ngResource' ], function() {
 				isArray : true
 			}
 		});
+	}]).factory('DistributionRule', ['$resource', function ($resource) {
+		return $resource('trade/distributionRule', {}, {
+			saveRule : {
+				url: 'trade/distributionRule/save',
+				method: 'POST'
+			},
+			deleteOne : {
+				url: 'trade/distributionRule/delete/:id',
+				method: 'PUT'
+			},
+			findAllRule : {
+				url: 'trade/distributionRule/page',
+				method: 'GET'
+			},
+			findAllRuleName : {
+				url: 'trade/distributionRule/ruleName',
+				method: 'GET',
+				isArray : true
+			},
+			findCountOfRule : {
+				url: 'trade/distributionRule/count',
+				method: 'GET'
+			}
+		})
 	}]);
 });

+ 1 - 1
src/main/webapp/resources/js/vendor/app.js

@@ -540,7 +540,7 @@ define([ 'angularAMD', 'ngLocal', 'common/services', 'common/directives', 'commo
 			controllerUrl: 'app/controllers/forstore/vendor_takeSelf_ctrl'
 		})).state('vendor_deliveryRule_add', angularAMD.route({
 			title : '新增配送规则',
-			url: '/vendor_deliveryRule_add',
+			url: '/vendor_deliveryRule_add?rule',
 			templateUrl : 'static/view/vendor/forstore/vendor_delivery_add_rule.html',
 			controller: 'vendorDeliveryRuleAddCtrl',
 			controllerUrl: 'app/controllers/forstore/vendor_deliveryRule_add_ctrl'

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

@@ -1,14 +1,125 @@
 define([ 'app/app' ], function(app) {
     'use strict';
-    app.register.controller('vendorDeliveryRuleAddCtrl', ['$scope','$rootScope', function ($scope, $rootScope) {
+    app.register.controller('vendorDeliveryRuleAddCtrl', ['$scope', '$rootScope', '$stateParams', 'Enterprise', 'toaster', 'DistributionRule', function ($scope, $rootScope, $stateParams, Enterprise, toaster, DistributionRule) {
         $rootScope.active = 'vendor_deliveryRule';
         // $scope.tab = 'deliverRule';
         $scope.title = '新增配送规则';
 
+        var initData = function () {
+            if ($stateParams.rule){
+                $scope.rule = angular.fromJson($stateParams.rule);
+                $scope.isModify = true;
+                $scope.isActive = $scope.rule.active == 1;
+                if ($scope.rule.orderType){
+                    var orderTypeArray = $scope.rule.orderType.split("-");
+                    $scope.orderType = {
+                        normal : false,
+                        preSale : false,
+                        bill : false
+                    };
+
+                    angular.forEach(orderTypeArray, function (data) {
+                        if (data == 1201){
+                            $scope.orderType.normal = true;
+                        }else if(data == 1202){
+                            $scope.orderType.preSale = true;
+                        }else if(data == 1203){
+                            $scope.orderType.bill = true;
+                        }
+                    })
+                }
+            }else {
+                $scope.isModify = false;
+                $scope.rule = {};
+                $scope.isActive = true;
+                $scope.rule.fareType = 1;
+                $scope.rule.userType = 1301;
+                $scope.orderType = {
+                    normal : true,
+                    preSale : true,
+                    bill : false
+                };
+                Enterprise.getCurrencyByRegisterAddress({}, {} ,function (data) {
+                    if (data){
+                        $scope.rule.currencyName = data.data;
+                    }
+                }, function (error) {
+                    toaster.pop('error', "获取企业币别信息失败");
+                });
+
+                DistributionRule.findCountOfRule({}, {}, function (data) {
+                    if (data){
+                        var num = data.data;
+                        $scope.rule.num = num + 1;
+                    }
+                });
+
+                $scope.fareArray = [];
+                var firstFare = {
+                    start : 0,
+                    fare : 0
+                };
+                var secondFare = {
+                    start : 0,
+                    end : 0,
+                    fare : 0
+                };
+                $scope.fareArray.push(firstFare);
+                $scope.fareArray.push(secondFare);
+            }
+        };
+        initData();
+
+        $scope.saveDistributionRule = function (isAdd) {
+            if (!$scope.rule.shippingMethod){
+                toaster.pop('error', "请选择配送方式");
+                return;
+            }
+            if(!$scope.rule.ruleName){
+                toaster.pop('error', "请填写规则名称");
+                return;
+            }
+            if(!$scope.orderType.normal && !$scope.orderType.preSale && !$scope.orderType.bill){
+                toaster.pop('error', "请选择适用类型");
+                return;
+            }
+            if(!$scope.rule.userType){
+                toaster.pop('error', "请选择适用类型");
+                return;
+            }
+            if($scope.repeatError){
+                toaster.pop('error', "该规则名称已存在,请修改");
+                return;
+            }
+
+            //拼接适用类型
+            var typeArray = [];
+            if ($scope.orderType.normal){
+                typeArray.push(1201);
+            }
+            if ($scope.orderType.preSale){
+                typeArray.push(1202);
+            }
+            if ($scope.orderType.bill){
+                typeArray.push(1203);
+            }
+            $scope.rule.orderType = typeArray.join("-");
+            DistributionRule.saveRule({isAdd:isAdd, isActive:$scope.isActive}, $scope.rule , function (data) {
+                if (data){
+                    // $scope.loadDeliveryRule();
+                }
+            },function (error) {
+                toaster.pop('error', "保存配送规则失败");
+            })
+        };
+
+        $scope.close = function () {
+            window.open("vendor#/vendor_deliveryRule", '_blank');
+        };
+
         // 切换tab
-        $scope.type = 'style01';
         $scope.checkTab = function (t) {
-            $scope.type = t;
+            $scope.rule.fareType = t;
         };
     }]);
 });

+ 77 - 47
src/main/webapp/resources/js/vendor/controllers/forstore/vendor_deliveryRule_ctrl.js

@@ -1,63 +1,93 @@
 define([ 'app/app' ], function(app) {
     'use strict';
-    app.register.controller('vendorDeliveryRuleCtrl', ['$scope', '$rootScope', function ($scope, $rootScope) {
+    app.register.controller('vendorDeliveryRuleCtrl', ['$scope', '$rootScope', 'ngTableParams', 'DistributionRule', 'BaseService', 'toaster', '$state', function ($scope, $rootScope, ngTableParams, DistributionRule, BaseService, toaster, $state) {
         $rootScope.active = 'vendor_logistics';
         $scope.tab = 'deliverRule';
         $scope.title = '配送规则';
-        $scope.rules = [
-            {
-                id: 1,
-                step: 1,
-                style: 'UU配送',
-                title:'深圳市内满100元包邮,不满1000元邮费20元不满1000元',
-                isEffect: 1
-            },
-            {
-                id: 2,
-                step: 2,
-                style: '第三方配送',
-                title:'不满1000元邮费20元不满1000元',
-                isEffect: 0
-            },
-            {
-                id: 3,
-                step: 3,
-                style: '第三方配送',
-                title:'满1000元包邮,打折8.8',
-                isEffect: 1
+        $scope.$$rule = {};
+
+        $scope.ruleTableParams = new ngTableParams({
+            page : 1,
+            count : 10,
+            sorting : {
+                num : 'asc'
             }
-        ]
-        // 取消
-        $scope.disableTab = function (res) {
-            angular.forEach($scope.rules, function (rule) {
-                if(rule.id == res) {
-                    rule.isEffect = !rule.isEffect;
-                }
-            });
+        },{
+            total : 0,
+            getData : function ($defer, params) {
+                var param = BaseService.parseParams(params.url());
+                DistributionRule.findAllRule(param, function (page){
+                    $scope.$$rule.totalElements = page.totalElements;
+                    if(Number(page.totalElements) > 0) {
+                        $scope.$$rule.start = Number(page.size) * (Number(page.number) - 1) + 1;
+                    }else {
+                        $scope.$$rule.start = 0;
+                    }
+                    $scope.$$rule.end = Number(page.size) * (Number(page.number) - 1) + Number(page.numberOfElements);
+                    params.total(page.totalElements);
+                    $defer.resolve(page.content);
+                },function () {
+                    toaster.pop('error', '获取配送规则失败');
+                } )
+            }
+        });
+
+        $scope.editRule = function (data) {
+            if (data){
+                $state.go('vendor_deliveryRule_add', {rule : angular.toJson(data)});
+            }else {
+                $state.go('vendor_deliveryRule_add');
+            }
+
         };
-        // 激活
-        $scope.activeTab = function (res) {
-            angular.forEach($scope.rules, function (rule) {
-                if(rule.id == res) {
-                    rule.isEffect = !rule.isEffect;
+
+        $scope.changeActive = function (rule, isAdd, active) {
+            DistributionRule.saveRule({isAdd:isAdd,isActive:active}, rule, function (data) {
+                if (data){
+                    $scope.ruleTableParams.reload();
                 }
-            });
+            })
+        };
+
+        $scope.showDeleteFrame = function (data) {
+            $scope.deleteFrame = true;
+            $scope.deleteObject = data;
         };
+
         //删除地址
-        $scope.deleteRule = function (data) {
-            var index = $scope.rules.indexOf(data);
-            $scope.deleteObject = angular.copy(data);
-            $scope.deleteObject.index = index;
-            $scope.showDeleteFrame = true;
+        $scope.deleteRule = function (id) {
+            DistributionRule.deleteOne({id:id}, {}, function () {
+                $scope.deleteFrame = false;
+                toaster.pop('info', '删除自提点地址成功');
+                $scope.loadDeliveryRule();
+            }, function () {
+                toaster.pop('error', '删除自提点地址失败');
+            });
+        };
+
+        /**
+         * 刷新配送规则
+         */
+        $scope.loadDeliveryRule = function () {
+            $scope.ruleTableParams.page(1);
+            $scope.ruleTableParams.reload();
+            $scope.getTakeSelfName();
         };
+
+        $scope.getTakeSelfName = function () {
+            DistributionRule.findAllRuleName({}, {}, function (data) {
+                if (data){
+                    $scope.nameArray = data;
+                }
+            },function (error) {
+                toaster.pop('error', "获取配送规则名称失败")
+            })
+        };
+
         //取消删除
         $scope.cancelDelete = function () {
-            $scope.showDeleteFrame = false;
-        };
-        //确定删除
-        $scope.ensureDelete = function (index) {
-            $scope.rules.splice(index,1);
-            $scope.showDeleteFrame = false;
+            $scope.deleteFrame = false;
         };
+
     }]);
 });

+ 68 - 58
src/main/webapp/resources/view/vendor/forstore/vendor_delivery_add_rule.html

@@ -363,7 +363,8 @@
 			<!--匹配结果导航-->
 			<div class="addRule-menu">
                 <span class="active">
-                    <a ng-click="">新增配送规则</a>
+                    <a ng-click="" ng-if="!isModify">新增配送规则</a>
+					<a ng-click="" ng-if="isModify">修改配送规则</a>
                     <i class="fa fa-remove" ng-click="close()"></i>
                 </span>
 			</div>
@@ -374,25 +375,26 @@
 			<div class="rule-content">
 				<div class="row">
 					<span><strong>*</strong>配送方式</span>
-					<select class="select-adder form-control delivery">
-						<option value="1">请选择配送方式</option>
-						<option value="2">第三方配送</option>
-						<option value="3">免邮费</option>
+					<select class="select-adder form-control delivery" ng-model="rule.shippingMethod">
+						<option value="">请选择配送方式</option>
+						<option value="1301">第三方配送</option>
+						<option value="1302">卖家配送</option>
+						<option value="1303">上门自提</option>
 					</select>
 					<span>优先级排序</span>
-					<input type="text" class="form-control sort">
+					<input type="text" class="form-control sort" ng-model="rule.num">
 					<span><strong>*</strong>规则名称</span>
-					<input type="text" class="form-control rule" style="text-align: left;">
+					<input type="text" class="form-control rule" style="text-align: left;" ng-model="rule.ruleName">
 				</div>
 				<div class="row radio-1">
 					<span>是否生效</span>
 					<label class="check-act">
-						<input type="radio" id="effect" name="radio" checked/>
+						<input type="radio" id="effect" name="radio" value="true" ng-click="isActive=true" ng-checked="isActive">
 						<label for="effect"></label>
 						生效
 					</label>
 					<label class="check-act">
-						<input type="radio" id="no-effect" name="radio"/>
+						<input type="radio" id="no-effect" name="radio" value="false" ng-click="isActive=false" ng-checked="!isActive">
 						<label for="no-effect"></label>
 						暂不生效
 					</label>
@@ -404,25 +406,25 @@
 				<div class="row check-1">
 					<span><strong>*</strong>适用类型</span>
 					<label class="check-act">
-						<input type="checkbox" id="1" checked/>
+						<input type="checkbox" id="1" ng-model="orderType.normal"/>
 						<label for="1"></label>
 						普通订单
 					</label>
 					<label class="check-act">
-						<input type="checkbox" id="2"/>
+						<input type="checkbox" id="2" ng-model="orderType.preSale"/>
 						<label for="2"></label>
 						预售订单
 					</label>
 					<label class="check-act">
-						<input type="checkbox" id="3"/>
+						<input type="checkbox" id="3" ng-modle="orderType.bill"/>
 						<label for="3"></label>
 						发票
 					</label>
 					<span>适用用户</span>
-					<select class="select-adder form-control for-people">
-						<option value="1">所有用户</option>
-						<option value="2">所有用户</option>
-						<option value="3">所有用户</option>
+					<select class="select-adder form-control for-people" ng-model="rule.userType">
+						<option value="1301">所有用户</option>
+						<!--<option value="2">所有用户</option>-->
+						<!--<option value="3">所有用户</option>-->
 					</select>
 				</div>
 				<div class="row">
@@ -446,24 +448,25 @@
 			<div class="rule-content">
 				<div class="row radio-1">
 					<span>计费方式</span>
-					<label class="check-act" ng-click="checkTab('style01')">
-						<input type="radio" id="style01" name="radio2" checked/>
+					<label class="check-act" ng-click="checkTab(1)">
+						<input type="radio" id="style01" name="radio2" ng-checked="rule.fareType==1"/>
 						<label for="style01"></label>
 						统一规定运费
 					</label>
-					<label class="check-act" ng-click="checkTab('style02')">
-						<input type="radio" id="style02" name="radio2"/>
+					<label class="check-act" ng-click="checkTab(2)">
+						<input type="radio" id="style02" name="radio2" ng-checked="rule.fareType==2"/>
 						<label for="style02"></label>
 						按总金额计算
 					</label>
 				</div>
 				<!--统一规定运费-->
-				<div class="style-regulations common-style" ng-if="type=='style01'">
+				<div class="style-regulations common-style" ng-if="rule.fareType==1">
 					<div class="row dot">
 						<span>统一运费</span>
 						<div class="price-input">
-							<i class="currency">$</i>
-							<input type="text" class="form-control" placeholder="请输入金额" />
+							<i class="currency" ng-if="rule.currencyName=='RMB'">¥</i>
+							<i class="currency" ng-if="rule.currencyName=='USD'">$</i>
+							<input type="text" class="form-control" placeholder="请输入金额" ng-model="rule.uniformPrice" />
 						</div>
 					</div>
 					<div class="row" style="background: none; padding: 0;">
@@ -474,43 +477,39 @@
 						<!--<div class="prompt"><strong>*</strong>公式说明内容将会在购物车中显示,可自行修改</div>-->
 						<!--</div>-->
 						<!--不可以编辑的状态-->
-						<div class="no-edit">全国统一运费 $20</div>
+						<div class="no-edit">全国统一运费
+							<em ng-if="rule.currencyName=='RMB'">¥</em>
+							<em ng-if="rule.currencyName=='USD'">$</em>
+							{{rule.uniformPrice}}
+						</div>
 					</div>
 				</div>
 				<!--按总金额计算-->
-				<div class="style-price common-style" ng-if="type=='style02'">
-					<div class="row dot">
-						<span>总金额在</span>
-						<div class="price-input">
-							<i class="currency">$</i>
-							<input type="text" class="form-control" placeholder="100" />
-							<em>以下,</em>
-						</div>
-						<div class="price-input">
-							<em>运费为</em>
-							<i class="currency">$</i>
-							<input type="text" class="form-control" placeholder="100" />
-						</div>
-					</div>
-					<div class="row">
-						<span>总金额在</span>
-						<div class="price-input">
-							<em><i>$1000</i>以上,</em>
-							<i class="currency">$</i>
-							<input type="text" class="form-control" placeholder="100" />
-							<em>以下,</em>
-						</div>
-						<div class="price-input">
-							<em>运费为</em>
-							<i class="currency">$</i>
-							<input type="text" class="form-control" placeholder="2000" />
-						</div>
-					</div>
-					<div class="row">
+				<div class="style-price common-style" ng-if="rule.fareType==2">
+					<!--<div class="row dot">-->
+						<!--<span>总金额在</span>-->
+						<!--<div class="price-input">-->
+							<!--<i class="currency" ng-if="rule.currencyName=='RMB'">¥</i>-->
+							<!--<i class="currency" ng-if="rule.currencyName=='USD'">$</i>-->
+							<!--<input type="text" class="form-control" placeholder="0" />-->
+							<!--<em>以下,</em>-->
+						<!--</div>-->
+						<!--<div class="price-input">-->
+							<!--<em>运费为</em>-->
+							<!--<i class="currency">$</i>-->
+							<!--<input type="text" class="form-control" placeholder="0" />-->
+						<!--</div>-->
+					<!--</div>-->
+					<div class="row" ng-repeat="(data, index) in fareArray" ng-class="{'dot' : index==0}">
 						<span>总金额在</span>
 						<div class="price-input">
-							<em><i>$1000</i>以上,</em>
-							<i class="currency">$</i>
+							<em>
+								<i class="currency" ng-if="rule.currencyName=='RMB'">¥</i>
+								<i class="currency" ng-if="rule.currencyName=='USD'">$</i>
+								<i>{{data.start}}</i>以上,
+							</em>
+							<i class="currency" ng-if="rule.currencyName=='RMB'">¥</i>
+							<i class="currency" ng-if="rule.currencyName=='USD'">$</i>
 							<input type="text" class="form-control" placeholder="100" />
 							<em>以下,</em>
 						</div>
@@ -519,8 +518,19 @@
 							<i class="currency">$</i>
 							<input type="text" class="form-control" placeholder="2000" />
 						</div>
-						<button style="margin-left: 20px;">增加范围</button>
 					</div>
+					<!--<div class="row">-->
+						<!--<span>总金额在</span>-->
+						<!--<div class="price-input">-->
+							<!--<em><i>$1000</i>以上,</em>-->
+						<!--</div>-->
+						<!--<div class="price-input">-->
+							<!--<em>运费为</em>-->
+							<!--<i class="currency">$</i>-->
+							<!--<input type="text" class="form-control" placeholder="2000" />-->
+						<!--</div>-->
+						<!--<button style="margin-left: 20px;">增加范围</button>-->
+					<!--</div>-->
 					<!--计算说明-->
 					<div class="row" style="background: none; padding: 0; margin-top: 10px !important;">
 						<span class="f14">计算说明</span>
@@ -534,9 +544,9 @@
 			</div>
 			<!--操作取消保存-->
 			<div class="deal-btn">
-				<a ng-click="" class="save-other">另存为新规则</a>
+				<a ng-click="saveDistributionRule(false)" ng-if="isModify" class="save-other">另存为新规则</a>
 				<a ng-click="" class="off">取消</a>
-				<a ng-click="" class="ok">保存</a>
+				<a ng-click="saveDistributionRule(true)" class="ok">保存</a>
 			</div>
 		</div>
 	</div>

+ 17 - 36
src/main/webapp/resources/view/vendor/forstore/vendor_delivery_rule.html

@@ -215,22 +215,16 @@
 				<li ng-class="{'active': tab=='takeSelf'}"><a ui-sref="vendor_takeSelf">自提点</a></li>
 				<li ng-class="{'active': tab=='logistic'}"><a ui-sref="vendor_logistics">发货地址</a></li>
 			</ul>
-			<!--匹配结果导航-->
-			<!--<div class="addRule-menu">-->
-			<!--<span class="active">-->
-			<!--<a ng-click="">新增配送规则</a>-->
-			<!--<i class="fa fa-remove" ng-click="close()"></i>-->
-			<!--</span>-->
-			<!--</div>-->
+
 		</div>
 		<!--配送规则列表-->
 		<div class="delivery-list">
 			<div class="content-header">
-				<a ui-sref="vendor_deliveryRule_add"><i class="fa fa-plus-circle"></i>&nbsp;新增配送规则</a>
+				<a ng-click="editRule()"><i class="fa fa-plus-circle"></i>&nbsp;新增配送规则</a>
 				<span>已设置的配送规则</span>
 			</div>
 			<div class="content-body">
-				<table class="table">
+				<table class="table" ng-table="ruleTableParams">
 					<thead>
 					<tr>
 						<th width="80">优先级</th>
@@ -241,39 +235,26 @@
 					</tr>
 					</thead>
 					<tbody>
-					<tr ng-repeat="rule in rules">
-						<td ng-bind="rule.step">22</td>
-						<td ng-bind="rule.style">第三方配送</td>
-						<td ng-bind="rule.title">深圳市内满100元包邮,不满1000元邮费20元不满1000元</td>
+					<tr ng-repeat="rule in $data">
+						<td ng-bind="rule.num">22</td>
+						<td ng-bind="rule.shippingMethod">第三方配送</td>
+						<td ng-bind="rule.ruleName">深圳市内满100元包邮,不满1000元邮费20元不满1000元</td>
 						<td>
 							<p class="switch">
-									<span class="checkbox" ng-click="disableTab(rule.id)" ng-if="rule.isEffect==0">
+								<span class="checkbox" ng-click="changeActive(rule, true, true)" ng-if="rule.active == 0">
+									<span><em></em></span>
+								</span>
+								<span class="checkbox active" ng-click="changeActive(rule, true, false)" ng-if="rule.active == 1">
 										<span><em></em></span>
-									</span>
-								<span class="checkbox active" ng-click="activeTab(rule.id)" ng-if="rule.isEffect==1">
-										<span><em></em></span>
-									</span>
+								</span>
 							</p>
 						</td>
 						<td>
-							<a ui-sref="vendor_deliveryRule_add">修改</a> | <a ng-click="deleteRule(rule)">删除</a>
+							<!--ui-sref="vendor_deliveryRule_add({ruleModify:{{turnToJson(rule)}}})"-->
+							<a ng-click="editRule(rule)">修改</a> | <a ng-click="deleteRule(rule)">删除</a>
 						</td>
 					</tr>
-					<!--<tr>-->
-					<!--<td>23</td>-->
-					<!--<td>第三方配送</td>-->
-					<!--<td>深圳市内满100元包邮,不满1000元邮费20元不满1000元</td>-->
-					<!--<td>-->
-					<!--<p class="switch">-->
-					<!--<span class="checkbox active">-->
-					<!--<span><em></em></span>-->
-					<!--</span>-->
-					<!--</p>-->
-					<!--</td>-->
-					<!--<td>-->
-					<!--<a href="">修改</a> | <a href="">删除</a>-->
-					<!--</td>-->
-					<!--</tr>-->
+
 					<tr class="record-num" ng-if="rules.length >0">
 						<td colspan="5">
 							<span class="count-tip">显示1-10条,共<em ng-bind="rules.length" style="color: #5078cb">2506</em>条</span>
@@ -291,12 +272,12 @@
 	</div>
 </div>
 <!--防误删-->
-<div class="com-del-box" ng-if="showDeleteFrame">
+<div class="com-del-box" ng-if="deleteFrame">
 	<div class="title">
 		<a ng-click="cancelDelete()"><i class="fa fa-close fa-lg"></i></a>
 	</div>
 	<div class="content">
 		<p><i class="fa fa-exclamation-circle"></i>是否要删除此规则?</p>
-		<div><a ng-click="cancelDelete()">取消</a><a ng-click="ensureDelete(deleteObject.index)">确认</a></div>
+		<div><a ng-click="cancelDelete()">取消</a><a ng-click="deleteRule(deleteObject.id)">确认</a></div>
 	</div>
 </div>