Explorar o código

新增结算页运费功能

hulh %!s(int64=8) %!d(string=hai) anos
pai
achega
591ed9352c

+ 8 - 3
src/main/java/com/uas/platform/b2c/logistics/controller/DistributionRuleController.java

@@ -1,8 +1,10 @@
 package com.uas.platform.b2c.logistics.controller;
 
+import com.alibaba.fastjson.JSONObject;
 import com.uas.platform.b2c.core.support.log.UsageBufferedLogger;
 import com.uas.platform.b2c.core.utils.FastjsonUtils;
 import com.uas.platform.b2c.logistics.model.DistributionRule;
+import com.uas.platform.b2c.logistics.model.UsableRuleInfo;
 import com.uas.platform.b2c.logistics.service.DistributionRuleService;
 import com.uas.platform.b2c.trade.support.ResultMap;
 import com.uas.platform.core.logging.BufferedLoggerManager;
@@ -11,6 +13,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
 import org.springframework.web.bind.annotation.*;
 import java.util.List;
+import java.util.Map;
 
 /**
  * Created by hulh on 2017/8/28.
@@ -116,9 +119,11 @@ public class DistributionRuleController {
 	 * 获取已设置生效配送规则的配送方式列表
 	 * @return
 	 */
-	@RequestMapping(value = "/method", method = RequestMethod.GET)
-	public List<Integer> findUsableMethod(){
-		return null;
+	@RequestMapping(value = "/usable/rule", method = RequestMethod.POST)
+	public Map<String, List<UsableRuleInfo>> findUsableRule(String area, @RequestBody List<JSONObject> info){
+		assert logger != null;
+		logger.log("匹配配送规则", "收货地址地区信息为"  + area);
+		return distributionRuleService.findRuleMatchArea(info, area);
 	}
 
 	@RequestMapping

+ 21 - 8
src/main/java/com/uas/platform/b2c/logistics/model/UsableRuleInfo.java

@@ -5,6 +5,10 @@ package com.uas.platform.b2c.logistics.model;
  * 适用的配送规则简要信息
  */
 public class UsableRuleInfo {
+	/**
+	 * 配送id
+	 */
+	private Long id;
 	/**
 	 * 配送规则名称
 	 */
@@ -12,7 +16,7 @@ public class UsableRuleInfo {
 	/**
 	 * 实际所需价格
 	 */
-//	private Double actualFare;
+	private Double fare;
 	/**
 	 * 配送方式
 	 */
@@ -27,12 +31,21 @@ public class UsableRuleInfo {
 	private String currencyName;
 
 	public UsableRuleInfo(DistributionRule rule){
+		this.id = rule.getId();
 		this.ruleName = rule.getRuleName();
 		this.method = rule.getShippingMethod();
 		this.currencyName = rule.getCurrencyName();
 		this.enuu = rule.getEnuu();
 	}
 
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
 	public String getRuleName() {
 		return ruleName;
 	}
@@ -41,13 +54,13 @@ public class UsableRuleInfo {
 		this.ruleName = ruleName;
 	}
 
-//	public Double getActualFare() {
-//		return actualFare;
-//	}
-//
-//	public void setActualFare(Double actualFare) {
-//		this.actualFare = actualFare;
-//	}
+	public Double getFare() {
+		return fare;
+	}
+
+	public void setFare(Double fare) {
+		this.fare = fare;
+	}
 
 	public Integer getMethod() {
 		return method;

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

@@ -1,11 +1,14 @@
 package com.uas.platform.b2c.logistics.service;
 
+import com.alibaba.fastjson.JSONObject;
 import com.uas.platform.b2c.logistics.model.DistributionRule;
+import com.uas.platform.b2c.logistics.model.UsableRuleInfo;
 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;
+import java.util.Map;
 
 /**
  * Created by hulh on 2017/8/28.
@@ -77,4 +80,12 @@ public interface DistributionRuleService {
 	 * @return
 	 */
 	List<Integer> findUsableShippingMethod();
+
+	/**
+	 * 根据店铺id集合和地区获取配送规则
+	 * @param uuidArray
+	 * @param area
+	 * @return
+	 */
+	Map<String, List<UsableRuleInfo>> findRuleMatchArea(List<JSONObject> uuidArray, String area);
 }

+ 10 - 5
src/main/java/com/uas/platform/b2c/logistics/service/impl/DistributionRuleServiceImpl.java

@@ -1,5 +1,6 @@
 package com.uas.platform.b2c.logistics.service.impl;
 
+import com.alibaba.fastjson.JSONObject;
 import com.uas.platform.b2c.core.config.SysConf;
 import com.uas.platform.b2c.core.constant.ShortConstant;
 import com.uas.platform.b2c.core.constant.SplitChar;
@@ -270,14 +271,16 @@ public class DistributionRuleServiceImpl implements DistributionRuleService{
 	 * @param area
 	 * @return
 	 */
-	public Map<String, List<UsableRuleInfo>> findRuleMatchArea(List<String> uuidArray, String area){
+	@Override
+	public Map<String, List<UsableRuleInfo>> findRuleMatchArea(List<JSONObject> uuidArray, String area){
 		if (area == null){
 			throw new IllegalOperatorException("地址信息缺失,请重新确认收货地址");
 		}
 		Map<String, List<UsableRuleInfo>> resultMap = new HashMap<>();
-		for (String uuid : uuidArray){
-			List<UsableRuleInfo> list = findRuleInStore(uuid, area);
-			resultMap.put(uuid, list);
+		for (JSONObject object : uuidArray){
+			Double price = Double.parseDouble(object.getString("fare"));
+			List<UsableRuleInfo> list = findRuleInStore(object.getString("uuid"), area, price);
+			resultMap.put(object.getString("uuid"), list);
 		}
 		return resultMap;
 	}
@@ -288,7 +291,7 @@ public class DistributionRuleServiceImpl implements DistributionRuleService{
 	 * @param area
 	 * @return
 	 */
-	public List<UsableRuleInfo> findRuleInStore(String uuid, String area){
+	public List<UsableRuleInfo> findRuleInStore(String uuid, String area, Double price){
 		StoreIn store = storeInDao.findByUuid(uuid);
 		if (store == null){
 			throw new IllegalOperatorException("店铺信息缺失,请刷新后重试");
@@ -306,6 +309,8 @@ public class DistributionRuleServiceImpl implements DistributionRuleService{
 				if (isContains){
 					methodList.add(rule.getShippingMethod());
 					UsableRuleInfo info = new UsableRuleInfo(rule);
+					Double fare = getFareOfRule(rule, price);
+					info.setFare(fare);
 					ruleInfoList.add(info);
 				}
 			}

+ 140 - 98
src/main/java/com/uas/platform/b2c/trade/order/model/Order.java

@@ -141,6 +141,24 @@ public class Order extends Document implements Serializable {
 	@Column(name = "or_deliverytype")
 	private Integer deliverytype;
 
+	/**
+	 * 拆单之前的配送方式,店铺id为key,配送方式为value
+	 */
+	@Column(name = "or_deliverytypes")
+	private String deliverytypes;
+
+	/**
+	 * 拆单之前的运费,店铺id为key,运费为value
+	 */
+	@Column(name = "or_fares")
+	private String fares;
+
+	/**
+	 * 运费
+	 */
+	@Column(name = "or_fare")
+	private Double fare;
+
 	/**
 	 * 收货地址 这里使用json字符串的形式将收货地址整个存起来
 	 */
@@ -259,7 +277,7 @@ public class Order extends Document implements Serializable {
 
 	/**
 	 * 订单状态(1->2->3->4->5->6->7->8->9)
-	 * 
+	 *
 	 * @Tip 必须严格按照顺序流转 1、TOBECONFIRMED(501, "待确认"), 2、TOBEPAID(503, "待付款"),
 	 *      3、PAID(505, "已付款"), 4、TOBESHIPPED(406, "待出货"), 5、SHIPPINGIN(403,
 	 *      "出货中"), 6、SHIPPED(407, "已出货"), 7、SENDING(408, "发货中"), 8、INBOUND(404,
@@ -274,7 +292,7 @@ public class Order extends Document implements Serializable {
 	 */
 	@Column(name = "or_paytime")
 	private Date paytime;
-	
+
 	/**
 	 * 失效时间
 	 */
@@ -295,7 +313,7 @@ public class Order extends Document implements Serializable {
 
 	/**
 	 * 银行转账信息id
-	 * 
+	 *
 	 * @Tip 目前只有银行转账信息,
 	 */
 	@Column(name = "or_banktf")
@@ -330,13 +348,13 @@ public class Order extends Document implements Serializable {
 	 */
 	@Column(name = "or_import_extra_charges")
 	private Double importExtraCharges;
-	
+
 	/**
 	 * 金额合计
 	 */
 	@Column(name = "or_price")
 	private Double price;
-	
+
 	/**
 	 * 币别
 	 */
@@ -384,31 +402,31 @@ public class Order extends Document implements Serializable {
 	 */
 	@Column(name = "or_qty")
 	private Double qty;
-	
+
 	/**
 	 * 批次数量
 	 */
 	@Column(name = "or_batch_qty")
 	private Integer batchQty;
-	
+
 	/**
 	 * 型号数量
 	 */
 	@Column(name = "or_cmp_qty")
 	private Integer cmpQty;
-	
+
 	/**
 	 * 客户收到货的时间
 	 */
 	@Column(name = "or_recipttime")
 	private Date reciptTime;
-	
+
 	/**
 	 * 二次收货时间
 	 */
 	@Column(name = "or_secondretime")
 	private Date secondReTime;
-	
+
 	/**
 	 * 发货时间,如果有两次 时间戳,时间戳
 	 */
@@ -446,7 +464,7 @@ public class Order extends Document implements Serializable {
 	@OneToMany(mappedBy = "order", cascade = { CascadeType.ALL }, fetch = FetchType.EAGER)
 	@OrderBy("detno")
 	private Set<OrderDetail> orderDetails;
-	
+
 	/**
 	 * 记录订单的客服、退款、退货、退换货服务状态
 	 * @tip 第一个数字位,代表客服状态,1:申请客服,2:客服确认中,3:客服有反馈
@@ -458,84 +476,84 @@ public class Order extends Document implements Serializable {
 	private String serviceStatus = "1111";
 
 	/**********************异常处理 start**********************/
-    /**
-     * 发起的售后申请状态
-     */
-    @Enumerated(EnumType.STRING)
-    @Column(name = "launch_or_ex_apply_status")
-    private AfterSaleStatus launchOrExApplyStatus;
+	/**
+	 * 发起的售后申请状态
+	 */
+	@Enumerated(EnumType.STRING)
+	@Column(name = "launch_or_ex_apply_status")
+	private AfterSaleStatus launchOrExApplyStatus;
 
-    /**
-     * 发起的申请单申请号
-     */
-    @Column(name = "launch_or_ex_apply_id")
-    private String launchOrExApplyId;
+	/**
+	 * 发起的申请单申请号
+	 */
+	@Column(name = "launch_or_ex_apply_id")
+	private String launchOrExApplyId;
 
-    /**
-     * 接收的供应商的多张申请单信息
-     * 格式: [{puExApplyId : "PAP2016111100000002", status : "SUP_TO_MALL"}, {puExApplyId : "PAP2016111100000003", status : "FINISHED"}]
-     */
-    @Column(name = "or_json_pu_ex_info")
-    private String puExInfoJson;
+	/**
+	 * 接收的供应商的多张申请单信息
+	 * 格式: [{puExApplyId : "PAP2016111100000002", status : "SUP_TO_MALL"}, {puExApplyId : "PAP2016111100000003", status : "FINISHED"}]
+	 */
+	@Column(name = "or_json_pu_ex_info")
+	private String puExInfoJson;
 
-    /**
-     * jsonPuExInfo的map形式,便于在程序中操作
+	/**
+	 * jsonPuExInfo的map形式,便于在程序中操作
 	 * key:采购异常申请单号
 	 * value:异常申请状态
-     */
-    @Transient
-    private Map<String, AfterSaleStatus> puExInfoMap;
-    
-    /**
-     * 退货单单号
-     */
-    @Column(name = "or_returnid")
-    private String returnId;
-    
-    /**
-     * 退货单的状态
-     */
-    @Column(name = "or_returnstatus")
-    private Integer returnStatus;
+	 */
+	@Transient
+	private Map<String, AfterSaleStatus> puExInfoMap;
 
-    /**
-     * 换货单号
-     */
-    @Column(name = "or_changeid")
-    private String changeId;
-    
-    /**
-     * 换货单的状态
-     */
-    @Column(name = "or_changestatus")
-    private Integer changeStatus;
+	/**
+	 * 退货单单号
+	 */
+	@Column(name = "or_returnid")
+	private String returnId;
 
-    /**
-     * 退款单的状态
-     */
-    @Column(name = "or_refundtatus")
-    private Integer refundStatus;
-    
-    /**
-     * 退款单号
-     */
-    @Column(name = "or_refund_id")
-    private String refundId;
+	/**
+	 * 退货单的状态
+	 */
+	@Column(name = "or_returnstatus")
+	private Integer returnStatus;
 
-    /************ 异常处理 end ************/
+	/**
+	 * 换货单号
+	 */
+	@Column(name = "or_changeid")
+	private String changeId;
 
-    /**
+	/**
+	 * 换货单的状态
+	 */
+	@Column(name = "or_changestatus")
+	private Integer changeStatus;
+
+	/**
+	 * 退款单的状态
+	 */
+	@Column(name = "or_refundtatus")
+	private Integer refundStatus;
+
+	/**
+	 * 退款单号
+	 */
+	@Column(name = "or_refund_id")
+	private String refundId;
+
+	/************ 异常处理 end ************/
+
+	/**
 	 * 开发票的快递公司
 	 */
 	@Column(name = "or_bill_logistic_company")
 	private String drawBillLogisComp;
-	
+
 	/**
 	 * 开发票的快递单号
 	 */
 	@Column(name = "or_bill_logistic_num")
 	private String drawBillLogisNum;
-	
+
 	/**
 	 * 开发票的时间
 	 */
@@ -737,8 +755,8 @@ public class Order extends Document implements Serializable {
 	 * @return the refund id
 	 */
 	public String getRefundId() {
-        return refundId;
-    }
+		return refundId;
+	}
 
 	/**
 	 * Sets refund id.
@@ -746,8 +764,8 @@ public class Order extends Document implements Serializable {
 	 * @param refundId the refund id
 	 */
 	public void setRefundId(String refundId) {
-        this.refundId = refundId;
-    }
+		this.refundId = refundId;
+	}
 
 	/**
 	 * Gets buyername.
@@ -973,8 +991,8 @@ public class Order extends Document implements Serializable {
 	 * @return the boolean
 	 */
 	public boolean isBuyNow() {
-        return buyNow;
-    }
+		return buyNow;
+	}
 
 	/**
 	 * Sets buy now.
@@ -982,8 +1000,8 @@ public class Order extends Document implements Serializable {
 	 * @param buyNow the buy now
 	 */
 	public void setBuyNow(boolean buyNow) {
-        this.buyNow = buyNow;
-    }
+		this.buyNow = buyNow;
+	}
 
 	/**
 	 * Gets invoicetype.
@@ -2304,7 +2322,7 @@ public class Order extends Document implements Serializable {
 			b2cOrDetail.setNumber(details.getNumber());
 			b2cOrDetail.setBatchCode(details.getBatchCode());
 			b2cOrDetail.setPrice(details.getPrice());
-			b2cOrDetail.setTax(details.getTax()); 
+			b2cOrDetail.setTax(details.getTax());
 			b2cOrDetail.setTaxes(details.getTaxes());
 			b2cOrDetail.setUnitprice(details.getTaxUnitprice());
 			b2cOrDetails.add(b2cOrDetail);
@@ -2365,7 +2383,7 @@ public class Order extends Document implements Serializable {
 		this.buyername = user.getUserName();
 		this.buyerTel = user.getUserTel();
 		this.setStatusToBeConfirmed(user.getUserUU());
-        buyNow = false; // 默认不是立即购买,是则手动设置
+		buyNow = false; // 默认不是立即购买,是则手动设置
 	}
 
 	/**
@@ -2412,8 +2430,8 @@ public class Order extends Document implements Serializable {
 	 * @return the launch or ex apply status
 	 */
 	public AfterSaleStatus getLaunchOrExApplyStatus() {
-        return launchOrExApplyStatus;
-    }
+		return launchOrExApplyStatus;
+	}
 
 	/**
 	 * Sets launch or ex apply status.
@@ -2421,8 +2439,8 @@ public class Order extends Document implements Serializable {
 	 * @param launchOrExApplyStatus the launch or ex apply status
 	 */
 	public void setLaunchOrExApplyStatus(AfterSaleStatus launchOrExApplyStatus) {
-        this.launchOrExApplyStatus = launchOrExApplyStatus;
-    }
+		this.launchOrExApplyStatus = launchOrExApplyStatus;
+	}
 
 	/**
 	 * Gets orderids.
@@ -2510,8 +2528,8 @@ public class Order extends Document implements Serializable {
 	 * @return the launch or ex apply id
 	 */
 	public String getLaunchOrExApplyId() {
-        return launchOrExApplyId;
-    }
+		return launchOrExApplyId;
+	}
 
 	/**
 	 * Sets launch or ex apply id.
@@ -2519,8 +2537,8 @@ public class Order extends Document implements Serializable {
 	 * @param launchOrExApplyId the launch or ex apply id
 	 */
 	public void setLaunchOrExApplyId(String launchOrExApplyId) {
-        this.launchOrExApplyId = launchOrExApplyId;
-    }
+		this.launchOrExApplyId = launchOrExApplyId;
+	}
 
 	/**
 	 * Gets pu ex info json.
@@ -2528,8 +2546,8 @@ public class Order extends Document implements Serializable {
 	 * @return the pu ex info json
 	 */
 	public String getPuExInfoJson() {
-        return puExInfoJson;
-    }
+		return puExInfoJson;
+	}
 
 	/**
 	 * Sets pu ex info json.
@@ -2537,8 +2555,8 @@ public class Order extends Document implements Serializable {
 	 * @param puExInfoJson the pu ex info json
 	 */
 	public void setPuExInfoJson(String puExInfoJson) {
-        this.puExInfoJson = puExInfoJson;
-    }
+		this.puExInfoJson = puExInfoJson;
+	}
 
 	/**
 	 * Gets used.
@@ -2564,11 +2582,11 @@ public class Order extends Document implements Serializable {
 	 * @return pu ex info map
 	 */
 	@JSONField(serialize = false)
-    @JsonIgnore
-    public Map<String, AfterSaleStatus> getPuExInfoMap() {
-        if(CollectionUtils.isEmpty(puExInfoMap) && StringUtils.hasText( puExInfoJson)) {
-            puExInfoMap = ExceptionUtil.puExInfoJsonToMap(puExInfoJson);
-        }
+	@JsonIgnore
+	public Map<String, AfterSaleStatus> getPuExInfoMap() {
+		if(CollectionUtils.isEmpty(puExInfoMap) && StringUtils.hasText( puExInfoJson)) {
+			puExInfoMap = ExceptionUtil.puExInfoJsonToMap(puExInfoJson);
+		}
 		return puExInfoMap;
 	}
 
@@ -2718,4 +2736,28 @@ public class Order extends Document implements Serializable {
 	public void setDissociative(Integer dissociative) {
 		this.dissociative = dissociative;
 	}
+
+	public String getDeliverytypes() {
+		return deliverytypes;
+	}
+
+	public void setDeliverytypes(String deliverytypes) {
+		this.deliverytypes = deliverytypes;
+	}
+
+	public Double getFare() {
+		return fare;
+	}
+
+	public void setFare(Double fare) {
+		this.fare = fare;
+	}
+
+	public String getFares() {
+		return fares;
+	}
+
+	public void setFares(String fares) {
+		this.fares = fares;
+	}
 }

+ 14 - 0
src/main/java/com/uas/platform/b2c/trade/order/model/Purchase.java

@@ -467,6 +467,12 @@ public class Purchase extends Document implements Serializable {
 	 */
 	@Column(name = "pu_deliverytype")
 	private String deliveryType;
+
+	/**
+	 * 运费
+	 */
+	@Column(name = "pu_fare")
+	private Double fare;
 	
 	/*
 	 * 自己送货的送货人
@@ -1527,6 +1533,14 @@ public class Purchase extends Document implements Serializable {
 		this.ensurePrice = ensurePrice;
 	}
 
+	public Double getFare() {
+		return fare;
+	}
+
+	public void setFare(Double fare) {
+		this.fare = fare;
+	}
+
 	/**
 	 * Gets transation price.
 	 *

+ 33 - 3
src/main/java/com/uas/platform/b2c/trade/order/service/impl/OrderServiceImpl.java

@@ -644,6 +644,11 @@ public class OrderServiceImpl implements OrderService {
     @Transactional
     private ResultMap updateOrder(String orderid, JSONObject[] ordersInfos) {
         ResultMap resultMap1 = convertInfoToOrder(ordersInfos);
+        JSONObject orderInfo  = ordersInfos[0];
+
+        JSONObject splitObject = orderInfo.getJSONObject("splitInfo");
+        System.out.println(splitObject);
+
         if(resultMap1.getCode() != ResultMapType.OK.getCode()) {
             return resultMap1;
         }
@@ -669,7 +674,7 @@ public class OrderServiceImpl implements OrderService {
         }
 
         List<Order> orderList = null;
-        ResultMap resultMap = splitOrder(order);
+        ResultMap resultMap = splitOrder(order, splitObject);
         if(resultMap.getCode() == CodeType.OK.code()) {
             orderList = (List<Order>) resultMap.getData();
         }else {
@@ -682,6 +687,11 @@ public class OrderServiceImpl implements OrderService {
         }
         str1 = StringUtils.isEmpty(str1) ? str1 : str1.substring(0, str1.length() - 1);
         order.setOrderids(str1);
+        //获取配送方式Map
+        JSONObject methodMap = splitObject.getJSONObject("methodList");
+        order.setDeliverytypes(FastjsonUtils.toJson(methodMap));
+        JSONObject fareMap = splitObject.getJSONObject("fareList");
+        order.setFares(FastjsonUtils.toJson(fareMap));
         orderDao.save(order);
 
         // 记录确认订单操作日志
@@ -702,11 +712,16 @@ public class OrderServiceImpl implements OrderService {
      * 针对[501]待确认付款的订单拆单
      */
     @Transactional
-    private ResultMap splitOrder(Order order) {
+    private ResultMap splitOrder(Order order, JSONObject object) {
         //确认付款这里将不同的店铺的商品拆单
         Map<String, List<OrderDetail>> listMap = new HashMap<>();
         //获得订单备注Map
         JSONObject remarkMap = FastjsonUtils.fromJson(order.getOrderRemark(), JSONObject.class);
+
+        //获取配送方式Map
+        JSONObject methodMap = object.getJSONObject("methodList");
+        JSONObject fareMap = object.getJSONObject("fareList");
+
         for (OrderDetail detail : order.getOrderDetails()) {
             List<OrderDetail> orderDetails = listMap.get(detail.getStoreid());
             if (orderDetails == null) {
@@ -747,6 +762,12 @@ public class OrderServiceImpl implements OrderService {
 
                 newOrderDetails.add(orderDetail1);
             }
+            /**
+             *  加入运费
+             */
+            or.setFare(Double.parseDouble(fareMap.getString(storeid)));
+            ensurePrices += or.getFare();
+
             or.setBatchQty(newOrderDetails.size());
             or.setEnsurePrice(NumberUtil.fractionNumCeil(ensurePrices, 2));
             or.setPrice(NumberUtil.fractionNumCeil(prices, 2));
@@ -758,6 +779,7 @@ public class OrderServiceImpl implements OrderService {
             map.put(storeid, remarkMap.getString(storeid));
             String orRemark = FastjsonUtils.toJson(map);
             or.setOrderRemark(orRemark);
+            or.setDeliverytype(Integer.parseInt(methodMap.getString(storeid)));
 
             StoreIn storeIn = storeInDao.findByUuid(storeid);
             if (storeIn == null) {
@@ -800,13 +822,21 @@ public class OrderServiceImpl implements OrderService {
     private ResultMap convertInfoToOrder(JSONObject[] ordersInfo) {
         JSONObject orderInfo  = ordersInfo[0];
         Order order = orderDao.findOne(orderInfo.getLong("id"));
-        order.setDeliverytype(orderInfo.getInteger("deliverytype"));
+        /**
+         * 这里的deliverytype为key,value的map形式
+         */
+//        order.setDeliverytypes(orderInfo.getString("deliverytypes"));
+//        order.setFares(orderInfo.getString("fares"));
 
         // TODO huxz 暂时设置为1301
         if (order.getDeliverytype() == null) {
             order.setDeliverytype(Type.Delivery_ByUU_Code.value());
         }
+
         Long add_id = orderInfo.getLong("add_id");
+        /**
+         * TODO hulh 这里需要转化地址。暂时设为1301
+         */
         String jsonAddress = getAddressFormateToString(order.getDeliverytype(), add_id);
         order.setJsonAddress(jsonAddress);
         order.setInvoicetype(orderInfo.getInteger("invoicetype"));

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

@@ -387,6 +387,7 @@ public class PurchaseServiceImpl implements PurchaseService {
 		JSONObject object = FastjsonUtils.fromJson(orderFromCust.getOrderRemark(), JSONObject.class);
 		purchase.setPurchaseRemark(object.getString(orderFromCust.getStoreid()));//绑定评论
 		purchase.setSendType(orderFromCust.getDeliverytype());
+		purchase.setFare(orderFromCust.getFare());
 		purchase.setSellerenuu(enuu);
 		purchase.setStoreid(orderFromCust.getStoreid());
 		//如果是优软代售的。

+ 5 - 2
src/main/webapp/resources/js/common/query/logisticsPort.js

@@ -87,6 +87,9 @@ define([ 'ngResource' ], function() {
 				url: 'trade/distributionRule/delete/:id',
 				method: 'PUT'
 			},
+			/**
+			 * 分页获取配送规则列表
+			 */
 			findAllRule : {
 				url: 'trade/distributionRule/page',
 				method: 'GET'
@@ -114,8 +117,8 @@ define([ 'ngResource' ], function() {
 				isArray : true
 			},
 			findUsableRule : {
-				url: 'trade/distributionRule/rule/matchArea',
-				method: 'GET'
+				url: 'trade/distributionRule/usable/rule',
+				method: 'POST'
 			}
 		})
 	}]);

+ 48 - 7
src/main/webapp/resources/js/usercenter/controllers/forstore/order_pay_ctrl.js

@@ -80,11 +80,14 @@ define(['app/app'], function(app) {
 			return Order.findStatusByOrderid({enOrderid : $stateParams.orderid}, function (response) {
 
 				$scope.storeArray = [];
+				$scope.ruleMap = {};
 				if (response.status == 501){
 					Order.orderContainGoods({enOrderid : $stateParams.orderid}, function(data) {
 						$scope.order = data;
 						$scope.$$orderDetailsMap = {};
-						$scope.remarkList = {};
+						$scope.remarkList = {};//订单备注列表
+						$scope.deliveryList = {};//配送方式列表
+						$scope.fareList = {};//运费列表
 						if($scope.order.orderDetails.length == 0) {
 							toaster.pop('warning', '您购买的商品已全部失效,请您前往购物车重新勾选');
 							$timeout(function () {
@@ -98,9 +101,10 @@ define(['app/app'], function(app) {
 							if($scope.$$orderDetailsMap[detail.storeName]) {
 								$scope.$$orderDetailsMap[detail.storeName].push(detail);
 							}else {
-								$scope.storeArray.push(detail.storeid);
 								$scope.$$orderDetailsMap[detail.storeName] = [];
 								$scope.remarkList[detail.storeid] = "";
+								$scope.deliveryList[detail.storeid] = '';
+								$scope.fareList[detail.storeid] = 0;
 								$scope.$$orderDetailsMap[detail.storeName].push(detail);
 							}
 							$scope.disabledAddAndSub(detail);
@@ -109,6 +113,13 @@ define(['app/app'], function(app) {
 							//计算总价格
 							$scope.calculateTotal();
 						}
+						angular.forEach($scope.$$orderDetailsMap, function (value, key) {
+							var object = {
+								uuid : value[0].storeid,
+								fare : $scope.storePrice[key]
+							};
+							$scope.storeArray.push(object);
+						});
 						initOrder();
 					}, function(response) {
 						toaster.pop('error', "获取订单的类型失败。" + response.data);
@@ -131,6 +142,10 @@ define(['app/app'], function(app) {
 							$scope.$$orderDetailsMap[detail.storeName].push(detail);
 						}
 					});
+					if ($scope.storeArray.length != 1){
+						$scope.deliveryList = angular.fromJson($scope.order.deliverytypes);
+						$scope.fareList = angular.fromJson($scope.order.fares);
+					}
 					initOrder();
 				}
 			});
@@ -138,6 +153,12 @@ define(['app/app'], function(app) {
 
 		getOrderData();
 
+		$scope.changeFare = function (details) {
+			var storeid = details[0].storeid;
+			var rule = $scope.deliveryList[storeid];
+			$scope.fareList[storeid] = rule.fare;
+		};
+
 
 		/**
 		 * 获取买家收货地址信息
@@ -174,6 +195,23 @@ define(['app/app'], function(app) {
 		$scope.selectAdd = function(address) {
 			$scope.payment.address = address;
             $scope.formatArea = $scope.payment.address.area.replace(/,/g,' ');
+			if ($scope.order.status == 501){
+				DistributionRule.findUsableRule({area:$scope.payment.address.area}, $scope.storeArray, function (data) {
+					if (data){
+						angular.forEach($scope.storeArray, function (item) {
+							$scope.ruleMap[item.uuid] = [];
+							var arr = data[item.uuid];
+							$scope.ruleMap[item.uuid] = arr;
+							if (arr.length != 0){
+								$scope.deliveryList[item.uuid] = arr[0];
+								$scope.fareList[item.uuid] = arr[0].fare;
+							}
+						});
+					}
+				},function (error) {
+					toaster.pop('info', '提示', error.data);
+				})
+			}
 		};
 
 		// 添加按钮,每次加1
@@ -353,7 +391,7 @@ define(['app/app'], function(app) {
 
 			orderInfo.id = $scope.order.id;
 			orderInfo.orderid = $scope.order.orderid;
-			orderInfo.deliverytype = $scope.order.deliverytype; // 配送方式
+			// orderInfo.deliverytype = $scope.order.deliverytype; // 配送方式
 
 			if($scope.order.currency == 'USD' && $scope.order.paytype == '1102') {
 				toaster.pop('info', '美元请线下付款');
@@ -399,9 +437,12 @@ define(['app/app'], function(app) {
 
 			orderInfo.totalprice = $scope.order.ensurePrice; // 应付总额
 			orderInfo.currency = $scope.order.currency; // 币别
-			orderInfo.orderRemark = angular.toJson($scope.remarkList);
-			// console.log(orderInfo.orderRemark);
-			// orderInfo.orderRemark = $scope.order.orderRemark; // 交易备注
+			orderInfo.orderRemark = angular.toJson($scope.remarkList);//订单备注
+			orderInfo.splitInfo = {
+				methodList : angular.toJson($scope.deliveryList),
+				fareList : angular.toJson($scope.fareList)
+			};
+
 			orderInfo.paytype =  $scope.order.paytype;
 			orderInfo.orderDetails = convertOrderDetails(); // 订单明细信息:id、number
 
@@ -446,7 +487,7 @@ define(['app/app'], function(app) {
 			    $scope.order.invoicetype = 1205;
 				$scope.order.paytype = '1102';
 			}
-			// 默认选择UU配送  --1301UU配送  --1302上门自提
+			// 默认选择第三方配送  --1301第三方配送 --卖家配送  --1303上门自提
 			$scope.order.deliverytype = 1301;
 
 			//获取地址的信息

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

@@ -630,20 +630,20 @@
 						</dd>
 						<dd class="line60">
 							<span class="style01" style="width: 60%; padding-left: 40px;">配送方式:
-								<select ng-if="order.status == 501" class="select" ng-model="order.deliverytype" style="opacity: 1;" >
-									<!--<option ng-switch-when="1301">第三方配送</option>-->
-									<option value="1301">第三方配送</option>
-						  			<option value="1302">卖家配送</option>
-									<option value="1303">上门自提</option>
+								<select ng-if="order.status == 501" class="select" ng-model="deliveryList[details[0].storeid]" style="opacity: 1;"
+										ng-options="rule as deliveryMethod[rule.method] for rule in ruleMap[details[0].storeid]"
+										ng-change="changeFare(details)">
+									<!--ng-options="rule.method as deliveryMethod[rule.method] for rule in ruleMap[details[0].storeid]"-->
+									<!--<option ng-repeat="rule in ruleMap[details[0].storeid]" value="rule.method">{{deliveryMethod[rule.method]}}</option>-->
 								</select>
-								<em ng-if="order.status != 501" class="color333" ng-bind="deliveryMethod[order.deliverytype]">物流配送</em>
+								<em ng-if="order.status != 501" class="color333" ng-bind="deliveryMethod[order.deliverytype]"></em>
 								<!--<i>满1000元包邮,未满足的订单收取运费20元</i>-->
 								<!--<button ng-click="getRule(order.storeid)">获取配送规则</button>-->
 							</span>
 							<span class="total-price">
-								<p><strong>运费:</strong><em ng-bind="0 | formateNumber : 2 | currencySysmbol : order.currency.substring(0,3)" style="font-weight: bold"></em></p>
+								<p><strong>运费:</strong><em ng-bind="fareList[details[0].storeid] | formateNumber : 2 | currencySysmbol : order.currency.substring(0,3)" style="font-weight: bold"></em></p>
 								<p><strong>店铺合计:</strong>
-									<em ng-if="order.status==501" ng-bind="storePrice[key] | formateNumber :2 | currencySysmbol : order.currency.substring(0,3)" style="font-weight: bold"></em>
+									<em ng-if="order.status==501" ng-bind="storePrice[key] + fareList[details[0].storeid] | formateNumber :2 | currencySysmbol : order.currency.substring(0,3)" style="font-weight: bold"></em>
 									<em ng-if="order.status!=501" ng-bind="order.ensurePrice | formateNumber :2 | currencySysmbol : order.currency.substring(0,3)" style="font-weight: bold"></em>
 								</p>
 							</span>