Commit 147fdcc79af5e286e524fc77902675f48203c6f8

Authored by yvan.ni
1 parent 5d832b12

物流运算的公共函数

Showing 1 changed file with 78 additions and 0 deletions
utils/util.js
@@ -514,6 +514,83 @@ function wx_back() { @@ -514,6 +514,83 @@ function wx_back() {
514 } 514 }
515 } 515 }
516 516
  517 +
  518 +//-------------------计算物流---------------
  519 +function calculatewuliu(code, o_shipping_price, goods_weight, out_of_weight,
  520 + goods_piece, user_addr, back_data,rs) {
  521 + var price = 0;
  522 + price += parseFloat(o_shipping_price);
  523 + if (user_addr == null) {
  524 + return 0;
  525 + }
  526 + //如果是包邮
  527 + if (back_data && back_data.is_by_all && !back_data.no_free_goods && out_of_weight >= 0) {
  528 + return 0;
  529 + }
  530 + //计算物流的config item;
  531 + var item = null;
  532 +
  533 + //------------循环获取config-----------
  534 + function get_wuliu_config(region_id, code, rs) {
  535 + var item = null, rslist = rs.pageData;
  536 + for (var i = 0; i < rslist.length; i++) {
  537 + if (rslist[i].code == code && rslist[i].region_id == region_id) {
  538 + item = rslist[i];
  539 + }
  540 + }
  541 + return item;
  542 + }
  543 + //-------循环获取config,code default-------
  544 + function get_wuliu_default(code, rs) {
  545 + var item = null, rslist = rs.pageData;
  546 + for (var i = 0; i < rslist.length; i++) {
  547 + if (rslist[i].shipping_code == code && rslist[i].is_default == 1) {
  548 + item = rslist[i];
  549 + }
  550 + }
  551 + return item;
  552 + }
  553 +
  554 + //先根据 镇 县 区找计算的config
  555 + item = get_wuliu_config(user_addr.district, code, rs);
  556 + if (item == null) item = get_wuliu_config(user_addr.city, code, rs);
  557 + if (item == null) item = get_wuliu_config(user_addr.province, code, rs);
  558 + if (item == null) item = get_wuliu_default(code, rs);
  559 + if (item == null) return o_shipping_price;
  560 + var fw_price = 0, fp_price = 0;
  561 + item = item.config;
  562 + if (item == null) return o_shipping_price;
  563 +
  564 + //------超出重量----------
  565 + if (back_data && back_data.is_by_all && out_of_weight<0){
  566 + goods_weight+=out_of_weight;
  567 + if(goods_weight<=0) goods_weight=-1;
  568 + }
  569 +
  570 + //------按重量----------
  571 + if (goods_weight >= 0 && item['money']) {
  572 + fw_price = parseFloat(item['money']);
  573 + if (goods_weight > item['first_weight']) {
  574 + var fw = goods_weight - item['first_weight'];
  575 + var n = Math.ceil(fw / item['second_weight'])
  576 + fw_price = fw_price + n * parseFloat(item['add_money']);
  577 + }
  578 + }
  579 +
  580 + //------按件数----------
  581 + if (goods_piece > 0 && item['piecemoney']) {
  582 + fp_price = parseFloat(item['piecemoney']);
  583 + if (goods_piece > item['first_piece']) {
  584 + var fp = goods_piece - item['first_piece'];
  585 + var m = Math.ceil(fp / item['second_piece'])
  586 + fp_price = fp_price + m * parseFloat(item['add_piecemoney']);
  587 + }
  588 + }
  589 +
  590 + var rspice = parseFloat(price + fw_price + fp_price);
  591 + return rspice;
  592 +}
  593 +
517 module.exports = { 594 module.exports = {
518 formatTime: function(e, r) { 595 formatTime: function(e, r) {
519 var t = e ? new Date(1e3 * e) : new Date(), n = t.getFullYear(), o = t.getMonth() + 1, a = t.getDate(), u = t.getHours(), i = t.getMinutes(), f = t.getSeconds(), s = function(e) { 596 var t = e ? new Date(1e3 * e) : new Date(), n = t.getFullYear(), o = t.getMonth() + 1, a = t.getDate(), u = t.getHours(), i = t.getMinutes(), f = t.getSeconds(), s = function(e) {
@@ -627,4 +704,5 @@ module.exports = { @@ -627,4 +704,5 @@ module.exports = {
627 ajax_ok2:ajax_ok2, //将JS数组对象按其某个键值重组成Map对象 704 ajax_ok2:ajax_ok2, //将JS数组对象按其某个键值重组成Map对象
628 wx_back:wx_back, 705 wx_back:wx_back,
629 _debounce, 706 _debounce,
  707 + calculatewuliu:calculatewuliu, //计算物流的函数进行抽象
630 }; 708 };