Browse Source

debug oil

stanley-king 4 năm trước cách đây
mục cha
commit
fb969c4807

+ 2 - 2
core/framework/libraries/model.php

@@ -1104,8 +1104,8 @@ class ModelDb
     protected function parseJoin($options = [])
     {
         $joinStr = '';
-//        if (false === strpos($options['table'],',')) return null;
-        if (false === strpos(null,',')) return null;
+        if (false === strpos($options['table'],',')) return null;
+//        if (false === strpos(null,',')) return null;
 
         $table = explode(',',$options['table']);
         $on = explode(',',$options['on']);

+ 6 - 6
data/config/dev/vgoods.ini.php

@@ -1,18 +1,18 @@
 <?php
 declare(strict_types=0);
 
+$config['membcard_exclude_goods_id'] = [6217];
+$config['card_coomonid'] = ['oil' => 3449, 'mobile' => 3450];
+$config['tips'] = ['first_order' => '首次充值立享9.7折', 'vip_first_order' => '会员充值9.5折','none_vip' => '升级会员享受9.5折', 'vip_user' => '分享给好友'];
 
 $handlers = [];
 #type:虚拟商品类型,order_method下午单后的自动操作函数,
 #paid_oper 支付完成后的操作类型,auto 表示自动,manual 表示人工点击,paid_method表示点击调用的方法
 #input_params 表示输入必须带的参数。
 
-$handlers[6217] = ['type' => 'member_card',
-                    'order_method' => '',
-                    'paid_oper' => 'auto',   'paid_method' => 'OnMCardPaidSuccess',
-                    'input_params' => [],'additional' => ['card_type' => 'year']];
+$handlers[6217] = ['type' => 'member_card', 'order_method' => '', 'paid_oper' => 'auto', 'paid_method' => 'OnMCardPaidSuccess', 'input_params' => [], 'additional' => ['card_type' => 'year']];
 
-$handlers[6218] = ['type' => 'oil_card',    'order_method' => 'OnAssignOilCard',  'paid_oper' => 'manual', 'paid_method' => 'OnOilPaidSuccess',   'input_params' => ['card_id']];
-$handlers[6219] = ['type' => 'phone_card',  'order_method' => 'OnAssignPhoneCard','paid_oper' => 'manual', 'paid_method' => 'OnPhonePaidSuccess', 'input_params' => ['card_id']];
+$handlers[6218] = ['type' => 'oil_card', 'order_method' => 'OnAssignOilCard', 'paid_oper' => 'manual', 'paid_method' => 'OnOilPaidSuccess', 'input_params' => ['card_id']];
+$handlers[6219] = ['type' => 'phone_card', 'order_method' => 'OnAssignPhoneCard', 'paid_oper' => 'manual', 'paid_method' => 'OnPhonePaidSuccess', 'input_params' => ['card_id']];
 
 $config['vgoods_handlers'] = $handlers;

+ 13 - 13
helper/goods_helper.php

@@ -30,13 +30,13 @@ class goods_helper
     }
     public function get_distinct($goods_commonids)
     {
-        $goods_list = Model('goods')->cls()->getGoodsListByColorDistinct(array('goods_commonid' => array('in', $goods_commonids)),self::fieldstr);
+        $goods_list = Model('goods')->cls()->getGoodsListByColorDistinct(['goods_commonid' => ['in', $goods_commonids]],self::fieldstr);
         $goods_list = $this->goods_list_extend($goods_list);
         return $goods_list;
     }
     public function get_infos($goods_ids,$page=0,$order='goods_id asc')
     {
-        $goods_list = Model('goods')->cls()->getGoodsOnlineList(array('goods_id' => array('in', $goods_ids)),self::fieldstr,$page,$order);
+        $goods_list = Model('goods')->cls()->getGoodsOnlineList(['goods_id' => ['in', $goods_ids]],self::fieldstr,$page,$order);
         $goods_list = $this->goods_list_extend($goods_list);
         return $goods_list;
     }
@@ -49,13 +49,13 @@ class goods_helper
         $mod = Model('goods');
         $common_info = $mod->getGoodeCommonInfoByID($common_id);
         if(empty($common_info)) {
-            $err = array('code' => errcode::ErrParamter,'msg' =>'商品不存在或者已经删除');
+            $err = ['code' => errcode::ErrParamter,'msg' =>'商品不存在或者已经删除'];
             return false;
         }
 
-        $goods_list = $mod->getGoodsOnlineList(array('goods_commonid' => $common_id),self::fieldstr);
+        $goods_list = $mod->getGoodsOnlineList(['goods_commonid' => $common_id],self::fieldstr);
         if(empty($goods_list)) {
-            $err = array('code' => errcode::ErrParamter,'msg' =>'抱歉,商品已经下架了,不能查看详情~');
+            $err = ['code' => errcode::ErrParamter,'msg' =>'抱歉,商品已经下架了,不能查看详情~'];
             return false;
         }
 
@@ -63,7 +63,7 @@ class goods_helper
             $mod->click_goods($goods_info['goods_id']);
         }
 
-        $ret = array();
+        $ret = [];
         $gcommon = new goods_common($common_info,$goods_list,$show_gid);
         $ret['common_info'] = $gcommon->format();
 
@@ -93,7 +93,7 @@ class goods_helper
     public function common_summary($common_ids, &$goods_ids, &$related_goods)
     {
         $mod = Model('goods');
-        $goods_list = $mod->getGoodsListByColorDistinct(array('goods_commonid' => array('in', $common_ids)),self::fieldstr);
+        $goods_list = $mod->getGoodsListByColorDistinct(['goods_commonid' => ['in', $common_ids]],self::fieldstr);
 
         $goods_ids = array();
         foreach ($goods_list as $goods) {
@@ -104,7 +104,7 @@ class goods_helper
     }
     public function online_summary(&$goods_ids, &$related_goods)
     {
-        $goods_list = Model('goods')->cls()->getGoodsOnlineList(array('goods_id' => array('in', $goods_ids)),self::fieldstr);
+        $goods_list = Model('goods')->cls()->getGoodsOnlineList(['goods_id' => ['in', $goods_ids]],self::fieldstr);
         $goods_ids = array();
         foreach ($goods_list as $goods) {
             $goods_id = intval($goods['goods_id']);
@@ -117,7 +117,7 @@ class goods_helper
     }
     public function cart_summary($goods_ids,&$related_goods)
     {
-        $goods_list = Model('goods')->cls()->getGoodsList(array('goods_id' => array('in', $goods_ids)),self::fieldstr);
+        $goods_list = Model('goods')->cls()->getGoodsList(['goods_id' => ['in', $goods_ids]],self::fieldstr);
         return $this->summary($goods_list,$related_goods);
     }
 
@@ -178,21 +178,21 @@ class goods_helper
             }
         }
 
-        $ret = array();
+        $ret = [];
         $ret['summary'] = $summary_list;
         $ret['sort_summary'] = $sort_summarys;
 
-        $ret['groupbuy'] = array();
+        $ret['groupbuy'] = [];
         foreach ($gbuys as $key => $val) {
             array_push($ret['groupbuy'],$val);
         }
 
-        $ret['limitime'] = array();
+        $ret['limitime'] = [];
         foreach ($ltimes as $key => $val) {
             array_push($ret['limitime'],$val);
         }
 
-        $ret['bundling'] = array();
+        $ret['bundling'] = [];
         foreach ($bundling as $key => $val) {
             array_push($ret['bundling'],$val);
         }

+ 27 - 4
helper/mcard/amount_card.php

@@ -18,11 +18,13 @@ class amount_card extends card
             $left = intval($this->left_amount() * 100);
             if ($left <= 0) {
                 return false;
-            } else {
+            }
+            else {
                 return true;
             }
         }
-        else {
+        else
+        {
             return true;
         }
     }
@@ -31,14 +33,35 @@ class amount_card extends card
     {
         $left_cent = intval($this->left_amount() * 100 + 0.5);
 
-        if ($left_cent > $cent) {
+        if ($left_cent > $cent)
+        {
             $amount = $cent;
             $useup = false;
-        } else {
+        }
+        else
+        {
             $amount = $left_cent;
             $useup = true;
         }
 
         return [$amount, $useup];
     }
+
+    public function calc(int $cent)
+    {
+        $left_cent = intval($this->left_amount() * 100 + 0.5);
+
+        if ($left_cent > $cent)
+        {
+            $amount = $cent;
+            $useup = false;
+        }
+        else
+        {
+            $amount = $left_cent;
+            $useup = true;
+        }
+        $price = round($amount * (1 - $this->discount()) / 100, 2);
+        return [$amount, $useup,$price];
+    }
 }

+ 18 - 0
helper/mcard/amount_period_card.php

@@ -40,4 +40,22 @@ class amount_period_card extends card
 
         return [$amount, $useup];
     }
+
+    public function calc(int $cent)
+    {
+        $left_cent = intval($this->left_amount() * 100 + 0.5);
+
+        if ($left_cent > $cent)
+        {
+            $amount = $cent;
+            $useup = false;
+        }
+        else
+        {
+            $amount = $left_cent;
+            $useup = true;
+        }
+        $price = round($amount * (1 - $this->discount()) / 100, 2);
+        return [$amount, $useup,$price];
+    }
 }

+ 1 - 1
helper/mcard/card.php

@@ -64,6 +64,6 @@ abstract class card
     }
 
     abstract public function usable(): bool;
-
     abstract public function deduct(int $cent);
+    abstract public function calc(int $cent);
 }

+ 46 - 2
helper/mcard/mcard.php

@@ -1,5 +1,5 @@
 <?php
-declare(strict_types=1);
+declare(strict_types=0);
 namespace mcard;
 
 const AmountType = 1;
@@ -19,6 +19,12 @@ require_once(BASE_HELPER_PATH . '/mcard/user_mcards.php');
 require_once(BASE_HELPER_PATH . '/mcard/amount_card.php');
 require_once(BASE_HELPER_PATH . '/mcard/amount_period_card.php');
 require_once(BASE_HELPER_PATH . '/mcard/period_card.php');
+require_once(BASE_HELPER_PATH . '/bonus_helper.php');
+require_once(BASE_HELPER_PATH . '/goods_helper.php');
+
+
+use goods_helper;
+use bonus;
 
 function getConfig($type)
 {
@@ -28,4 +34,42 @@ function getConfig($type)
     else {
         return [];
     }
-}
+}
+
+function isVip($member_id)
+{
+    if($member_id <=0 ) return false;
+    $user_cards = new user_mcards($member_id);
+    return $user_cards->hasCards();
+}
+
+function canUseVip($goods_id)
+{
+    global $config;
+    $exclue_gids = $config['membcard_exclude_goods_id'];
+    if(empty($exclue_gids)) {
+        return true;
+    } else {
+        return in_array(intval($goods_id),$exclue_gids) === false;
+    }
+}
+
+function vip_price(&$goods,$member_id)
+{
+    $user_cards = new user_mcards($member_id);
+    if($user_cards->hasCards())
+    {
+        foreach ($goods as &$summary) {
+            $goods_price = $user_cards->calc_price($summary['goods_id'], $summary['goods_price']);
+            $summary['goods_price'] = $goods_price;
+        }
+    }
+}
+
+function firorder_price(&$goods,$discount)
+{
+    foreach ($goods as &$summary) {
+        $goods_price = $summary['goods_price'];
+        $summary['goods_price'] = round($goods_price* (1 - $discount),2);
+    }
+}

+ 6 - 0
helper/mcard/period_card.php

@@ -29,4 +29,10 @@ class period_card extends card
     {
         return [$cent, false];
     }
+
+    public function calc(int $cent)
+    {
+        $price = round($cent * (1 - $this->discount()) / 100, 2);
+        return [$cent, false,$price];
+    }
 }

+ 50 - 0
helper/mcard/user_mcards.php

@@ -18,6 +18,10 @@ class user_mcards
         $this->load_cards();
     }
 
+    public function hasCards() {
+        return !empty($this->mCards);
+    }
+
     public function addCard($params)
     {
         $type = intval($params['card_type']);
@@ -124,6 +128,52 @@ class user_mcards
 
         return intval($total * 100) >= intval($amount * 100);
     }
+    public function calc_price($goods_id,$price)
+    {
+        if(canUseVip($goods_id)) {
+            return $this->calc_amount($price);
+        } else {
+            return $price;
+        }
+    }
+
+    public function calc_amount($amount)
+    {
+        if($this->enough($amount))
+        {
+            $amount = intval($amount * 100);
+
+            $total_price = 0.00;
+            $calc_price = function (card $card, int $cent) use(&$total_price)
+            {
+                [$consumer,$useup,$price] = $card->calc($cent);
+                $total_price += $price;
+
+                return $consumer;
+            };
+
+            foreach ($this->mCards['aperiod'] as $card) {
+                if ($amount <= 0) {
+                    break;
+                } else {
+                    $amount -= $calc_price($card, $amount);
+                }
+            }
+
+            foreach ($this->mCards['amount'] as $card) {
+                if ($amount <= 0) {
+                    break;
+                } else {
+                    $amount -= $calc_price($card, $amount);
+                }
+            }
+
+            return $total_price;
+        }
+        else {
+            return $amount;
+        }
+    }
 
     private function account($cards)
     {

+ 7 - 7
helper/model/goods_summary.php

@@ -136,11 +136,11 @@ class goods_summary
             }
             else {
                 $summary['have_gift'] = false;
-                $summary['gifts'] = array();
+                $summary['gifts'] = [];
             }
         }
         else {
-            $summary['gifts'] = array();
+            $summary['gifts'] = [];
         }
 
         $have_combo = activity_helper::have_combo($this->goods_id);
@@ -148,14 +148,14 @@ class goods_summary
         if($have_combo) {
             $summary['combos'] = activity_helper::combo_goods($this->goods_id);
         } else {
-            $summary['combos'] = array();
+            $summary['combos'] = [];
         }
         $have_recommend = activity_helper::have_recommend($this->goods_id);
         $summary['have_recommend'] = $have_recommend;
 
         if($this->bundles == false || empty($this->bundles)) {
             $summary['have_bundle'] = false;
-            $summary['bundles'] = array();
+            $summary['bundles'] = [];
         } else {
             $summary['have_bundle'] = true;
             $summary['bundles'] = $this->bundles;
@@ -269,9 +269,9 @@ class goods_summary
 
     public function related_goods()
     {
-        $combos = array();
-        $gifts  = array();
-        $bundles = array();
+        $combos = [];
+        $gifts  = [];
+        $bundles = [];
 
         if(activity_helper::have_combo($this->goods_id)) {
             $combos = activity_helper::combo_goods($this->goods_id);

+ 83 - 0
mobile/control/index.php

@@ -8,6 +8,7 @@
 
 
 use bonus\activity_bonus;
+use mcard\user_mcards;
 
 defined('InShopNC') or exit('Access Invalid!');
 
@@ -22,6 +23,7 @@ require_once(BASE_ROOT_PATH . '/helper/session_helper.php');
 require_once(BASE_ROOT_PATH . '/helper/url_helper.php');
 require_once(BASE_ROOT_PATH . '/helper/room/tpl_group_home.php');
 require_once(BASE_ROOT_PATH . '/helper/room/tpl_chatwo_home.php');
+require_once(BASE_HELPER_PATH . '/mcard/mcard.php');
 
 class indexControl extends specialControl
 {
@@ -154,4 +156,85 @@ class indexControl extends specialControl
             return self::outerr(errcode::ErrParamter);
         }
     }
+
+    public function card_goodsOp()
+    {
+        global $config;
+        $card_type = $_GET['card_type'];
+        if(empty($card_type)) {
+            return self::outerr(errcode::ErrParamter);
+        }
+        $goods = $this->card_goods($card_type);
+
+        $fVip = mcard\isVip(session_helper::memberid());
+        $ret = [];
+
+        $discount = 0.0;
+        if(session_helper::memberid() > 0)
+        {
+            if($fVip)
+            {
+                if(session_helper::first_order()) {
+                    $ret['tips'] = $config['tips']['vip_first_order'];
+                } else {
+                    $ret['tips'] = $config['tips']['vip_user'];
+                }
+            }
+            else{
+                $ret['tips'] = $config['tips']['none_vip'];
+            }
+        }
+        else {
+            $ret['tips'] = $config['tips']['first_order'];
+            $discount = 0.02;
+        }
+
+        if(session_helper::first_order()) {
+            $discount = 0.02;
+        }
+
+
+        if($fVip) {
+            mcard\vip_price($goods,session_helper::memberid());
+        } else {
+            mcard\firorder_price($goods,$discount);
+        }
+        $ret['goods'] = $goods;
+
+        return self::outsuccess($ret);
+    }
+
+    private function card_goods($card_type)
+    {
+        global $config;
+        $card_commids = $config['card_coomonid'];
+        if(empty($card_commids)) {
+            return [];
+        }
+
+        $commonid = intval($card_commids[$card_type]);
+        if($commonid > 0)
+        {
+            $mod_goods = Model('goods');
+            $goods_list = $mod_goods->getGoodsOnlineList(['goods_commonid' => $commonid]);
+            $helper = new goods_helper(new bonus\normal_calc());
+            $goods_list = $helper->summary($goods_list, $related_goods);
+
+            $summarys = &$goods_list['summary'];
+            $ret = [];
+            foreach ($summarys as $summary)
+            {
+                $item['goods_spec'] = $summary['goods_spec'];
+                $item['goods_id'] = $summary['goods_id'];
+                $item['goods_price'] = $summary['goods_price'];
+                $ret[] = $item;
+            }
+
+            return $ret;
+        }
+        else {
+            return [];
+        }
+
+    }
 }

+ 21 - 22
shop/control/store_goods_online.php

@@ -66,7 +66,8 @@ class store_goods_onlineControl extends BaseSellerControl {
     /**
      * 编辑商品页面
      */
-    public function edit_goodsOp() {
+    public function edit_goodsOp()
+    {
         $common_id = $_GET['commonid'];
         if ($common_id <= 0) {
             showMessage(L('wrong_argument'), '', 'html', 'error');
@@ -77,7 +78,7 @@ class store_goods_onlineControl extends BaseSellerControl {
             showMessage(L('wrong_argument'), '', 'html', 'error');
         }
 
-        $where = array('goods_commonid' => $common_id, 'store_id' => $_SESSION['store_id']);
+        $where = ['goods_commonid' => $common_id, 'store_id' => $_SESSION['store_id']];
         $goodscommon_info['g_storage'] = $model_goods->getGoodsSum($where, 'goods_storage');
         $goodscommon_info['spec_name'] = unserialize($goodscommon_info['spec_name']);
         if ($goodscommon_info['mobile_body'] != '') {
@@ -95,6 +96,7 @@ class store_goods_onlineControl extends BaseSellerControl {
         $model_type = Model('type');
         // 获取类型相关数据
         $typeinfo = $model_type->getAttr($goods_class['type_id'], $_SESSION['store_id'], $goodscommon_info['gc_id']);
+
         list($spec_json, $spec_list, $attr_list, $brand_list) = $typeinfo;
         Tpl::output('spec_json', $spec_json);
         Tpl::output('sign_i', count($spec_list));
@@ -104,22 +106,21 @@ class store_goods_onlineControl extends BaseSellerControl {
 
         // 取得商品规格的输入值
         $goods_array = $model_goods->getGoodsList($where, 'goods_id,goods_marketprice,goods_price,goods_storage,goods_serial,goods_storage_alarm,goods_spec,oms_id,goods_lowest_price,exp_date');
-        $sp_value = array();
+        $sp_value = [];
         if (is_array($goods_array) && !empty($goods_array)) {
 
             // 取得已选择了哪些商品的属性
-            $attr_checked_l = $model_type->typeRelatedList ( 'goods_attr_index', array (
-                    'goods_id' => intval ( $goods_array[0]['goods_id'] )
-            ), 'attr_value_id' );
+            $attr_checked_l = $model_type->typeRelatedList ( 'goods_attr_index', [
+                    'goods_id' => intval ( $goods_array[0]['goods_id'] )], 'attr_value_id' );
             if (is_array ( $attr_checked_l ) && ! empty ( $attr_checked_l )) {
-                $attr_checked = array ();
+                $attr_checked = [];
                 foreach ( $attr_checked_l as $val ) {
                     $attr_checked [] = $val ['attr_value_id'];
                 }
             }
             Tpl::output ( 'attr_checked', $attr_checked );
 
-            $spec_checked = array();
+            $spec_checked = [];
             $mod = Model();
             foreach ( $goods_array as $k => $v ) {
                 $a = unserialize($v['goods_spec']);
@@ -162,10 +163,10 @@ class store_goods_onlineControl extends BaseSellerControl {
         Tpl::output ( 'sp_value', $sp_value );
 
         // 实例化店铺商品分类模型
-        $store_goods_class = Model('store_goods_class')->getClassTree(array('store_id' => $_SESSION ['store_id'], 'stc_state' => '1'));
+        $store_goods_class = Model('store_goods_class')->getClassTree(['store_id' => $_SESSION ['store_id'], 'stc_state' => '1']);
         Tpl::output('store_goods_class', $store_goods_class);
         //处理商品所属分类
-        $store_goods_class_tmp = array();
+        $store_goods_class_tmp = [];
         if (!empty($store_goods_class)){
             foreach ($store_goods_class as $k=>$v) {
                 $store_goods_class_tmp[$v['stc_id']] = $v;
@@ -177,8 +178,8 @@ class store_goods_onlineControl extends BaseSellerControl {
             }
         }
         $goodscommon_info['goods_stcids'] = trim($goodscommon_info['goods_stcids'], ',');
-        $goods_stcids = empty($goodscommon_info['goods_stcids'])?array():explode(',', $goodscommon_info['goods_stcids']);
-        $goods_stcids_tmp = $goods_stcids_new = array();
+        $goods_stcids = empty($goodscommon_info['goods_stcids'])? [] :explode(',', $goodscommon_info['goods_stcids']);
+        $goods_stcids_tmp = $goods_stcids_new = [];
         if (!empty($goods_stcids)){
             foreach ($goods_stcids as $k=>$v){
                 $stc_parent_id = $store_goods_class_tmp[$v]['stc_parent_id'];
@@ -186,7 +187,7 @@ class store_goods_onlineControl extends BaseSellerControl {
                 if ($stc_parent_id > 0){//如果为二级分类,则分组到父级分类下
                     $goods_stcids_tmp[$stc_parent_id][] = $v;
                 } elseif (empty($goods_stcids_tmp[$v])) {//如果为一级分类而且分组不存在,则建立一个空分组数组
-                    $goods_stcids_tmp[$v] = array();
+                    $goods_stcids_tmp[$v] = [];
                 }
             }
             foreach ($goods_stcids_tmp as $k=>$v){
@@ -211,26 +212,24 @@ class store_goods_onlineControl extends BaseSellerControl {
         Tpl::output ( 'editor_multimedia', $editor_multimedia );
 
         // 小时分钟显示
-        $hour_array = array('00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23');
+        $hour_array = ['00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23'];
         Tpl::output('hour_array', $hour_array);
-        $minute_array = array('05', '10', '15', '20', '25', '30', '35', '40', '45', '50', '55');
+        $minute_array = ['05', '10', '15', '20', '25', '30', '35', '40', '45', '50', '55'];
         Tpl::output('minute_array', $minute_array);
 
         // 关联版式
-        $plate_list = Model('store_plate')->getStorePlateList(array('store_id' => $_SESSION['store_id']), 'plate_id,plate_name,plate_position');
+        $plate_list = Model('store_plate')->getStorePlateList(['store_id' => $_SESSION['store_id']], 'plate_id,plate_name,plate_position');
         $plate_list = array_under_reset($plate_list, 'plate_position', 2);
         Tpl::output('plate_list', $plate_list);
 
         // F码
         if ($goodscommon_info['is_fcode'] == 1) {
-            $fcode_array = Model('goods_fcode')->getGoodsFCodeList(array('goods_commonid' => $goodscommon_info['goods_commonid']));
+            $fcode_array = Model('goods_fcode')->getGoodsFCodeList(['goods_commonid' => $goodscommon_info['goods_commonid']]);
             Tpl::output('fcode_array', $fcode_array);
         }
-        $menu_promotion = array(
-            'lock' => $goodscommon_info['goods_lock'] == 1 ? true : false,
-            'gift' => $model_goods->checkGoodsIfAllowGift($goodscommon_info),
-            'combo' => $model_goods->checkGoodsIfAllowCombo($goodscommon_info)
-        );
+        $menu_promotion = [ 'lock' => $goodscommon_info['goods_lock'] == 1 ? true : false,
+                            'gift' => $model_goods->checkGoodsIfAllowGift($goodscommon_info),
+                            'combo' => $model_goods->checkGoodsIfAllowCombo($goodscommon_info)];
         $this->profile_menu('edit_detail','edit_detail', $menu_promotion);
         Tpl::output('edit_goods_sign', true);
         Tpl::showpage('store_goods_add.step2');

+ 57 - 45
shop/templates/default/seller/store_goods_add.step2.php

@@ -182,40 +182,50 @@
                     <h6>批量设置价格:</h6>
                     <a href="javascript:void(0)" class="close">X</a>
                     <input name="" type="text" class="text price" />
-                    <a href="javascript:void(0)" class="ncsc-btn-mini" data-type="price">设置</a><span class="arrow"></span></div>
-                </div></th>
+                    <a href="javascript:void(0)" class="ncsc-btn-mini" data-type="price">设置</a><span class="arrow"></span>
+                  </div>
+                </div>
+              </th>
               <th class="w90"><span class="red">*</span>底价
                   <div class="batch"><i class="icon-edit" title="批量操作"></i>
                       <div class="batch-input" style="display:none;">
                           <h6>批量设置价格:</h6>
                           <a href="javascript:void(0)" class="close">X</a>
                           <input name="" type="text" class="text price" />
-                          <a href="javascript:void(0)" class="ncsc-btn-mini" data-type="price">设置</a><span class="arrow"></span></div>
-                  </div></th>
+                          <a href="javascript:void(0)" class="ncsc-btn-mini" data-type="lowest_price">设置</a><span class="arrow"></span>
+                      </div>
+                  </div>
+              </th>
               <th class="w60"><span class="red">*</span><?php echo $lang['store_goods_index_stock'];?>
                 <div class="batch"><i class="icon-edit" title="批量操作"></i>
                   <div class="batch-input" style="display:none;">
                     <h6>批量设置库存:</h6>
                     <a href="javascript:void(0)" class="close">X</a>
                     <input name="" type="text" class="text stock" />
-                    <a href="javascript:void(0)" class="ncsc-btn-mini" data-type="stock">设置</a><span class="arrow"></span></div>
-                </div></th>
+                    <a href="javascript:void(0)" class="ncsc-btn-mini" data-type="stock">设置</a><span class="arrow"></span>
+                  </div>
+                </div>
+              </th>
               <th class="w100"><span class="red">*</span>有效期
                   <div class="batch"><i class="icon-edit" title="批量操作"></i>
                       <div class="batch-input" style="display:none;">
-                          <h6>批量设置价格:</h6>
+                          <h6>批量设置有效期:</h6>
                           <a href="javascript:void(0)" class="close">X</a>
                           <input name="" type="date" class="text exp_date" />
-                          <a href="javascript:void(0)" class="ncsc-btn-mini" data-type="exp_date">设置</a><span class="arrow"></span></div>
-                  </div></th>
+                          <a href="javascript:void(0)" class="ncsc-btn-mini" data-type="exp_date">设置</a><span class="arrow"></span>
+                      </div>
+                  </div>
+              </th>
               <th class="w60">预警值
                 <div class="batch"><i class="icon-edit" title="批量操作"></i>
                   <div class="batch-input" style="display:none;">
                     <h6>批量设置预警值:</h6>
                     <a href="javascript:void(0)" class="close">X</a>
                     <input name="" type="text" class="text stock" />
-                    <a href="javascript:void(0)" class="ncsc-btn-mini" data-type="alarm">设置</a><span class="arrow"></span></div>
-                </div></th>
+                    <a href="javascript:void(0)" class="ncsc-btn-mini" data-type="alarm">设置</a><span class="arrow"></span>
+                  </div>
+                </div>
+              </th>
               <th class="w90"><?php echo $lang['store_goods_index_goods_no'];?></th>
               <th class="w90">OMSID</th>
                 </thead>
@@ -1079,40 +1089,42 @@ function goods_stock_set(){
         $('input[name="g_price"]').removeAttr('readonly').css('background','');
         $('input[name="g_storage"]').removeAttr('readonly').css('background','');
         $('dl[nc_type="spec_dl"]').hide();
-    }else{
-        $('tbody[nc_type="spec_table"]').empty().html(str)
-            .find('input[nc_type]').each(function(){
-                s = $(this).attr('nc_type');
-                try{$(this).val(V[s]);}catch(ex){$(this).val('');};
-                if ($(this).attr('data_type') == 'marketprice' && $(this).val() == '') {
-                    $(this).val($('input[name="g_marketprice"]').val());
-                }
-                if ($(this).attr('data_type') == 'price' && $(this).val() == ''){
-                    $(this).val($('input[name="g_price"]').val());
-                }
-                if ($(this).attr('data_type') == 'stock' && $(this).val() == ''){
-                    $(this).val('0');
-                }
-                if ($(this).attr('data_type') == 'alarm' && $(this).val() == ''){
-                    $(this).val('0');
-                }
-            }).end()
-            .find('input[data_type="stock"]').change(function(){
-                computeStock();    // 库存计算
-            }).end()
-            .find('input[data_type="price"]').change(function(){
-                computePrice();     // 价格计算
-            }).end()
-            .find('input[data_type="lowest_price"]').change(function(){
-                computeLowestPrice($(this));     // 底价计算
-            }).end()
-            .find('input[data_type="omsid"]').change(function(){
-                oms_onchange();      // oms info
-            }).end()
-            .find('input[nc_type]').change(function(){
-                s = $(this).attr('nc_type');
-                V[s] = $(this).val();
-            });
+    }
+    else
+    {
+        $('tbody[nc_type="spec_table"]').empty().html(str).find('input[nc_type]').each(function(){
+            s = $(this).attr('nc_type');
+            try{
+                $(this).val(V[s]);}catch(ex){$(this).val('');};
+            if ($(this).attr('data_type') == 'marketprice' && $(this).val() == '') {
+                $(this).val($('input[name="g_marketprice"]').val());
+            }
+            if ($(this).attr('data_type') == 'price' && $(this).val() == ''){
+                $(this).val($('input[name="g_price"]').val());
+            }
+            if ($(this).attr('data_type') == 'stock' && $(this).val() == ''){
+                $(this).val('0');
+            }
+            if ($(this).attr('data_type') == 'alarm' && $(this).val() == ''){
+                $(this).val('0');
+            }
+        }).end()
+        .find('input[data_type="stock"]').change(function(){
+            computeStock();    // 库存计算
+        }).end()
+        .find('input[data_type="price"]').change(function(){
+            computePrice();     // 价格计算
+        }).end()
+        .find('input[data_type="lowest_price"]').change(function(){
+            computeLowestPrice($(this));     // 底价计算
+        }).end()
+        .find('input[data_type="omsid"]').change(function(){
+            oms_onchange();      // oms info
+        }).end()
+        .find('input[nc_type]').change(function(){
+            s = $(this).attr('nc_type');
+            V[s] = $(this).val();
+        });
     }
 }
 

+ 11 - 3
test/TestMemberCard.php

@@ -17,6 +17,9 @@ require_once(BASE_HELPER_PATH . '/mcard/mcard.php');
 require_once(BASE_HELPER_PATH . '/mtopcard/mtopcard.php');
 require_once(BASE_HELPER_PATH . '/util_helper.php');
 require_once(BASE_HELPER_PATH . '/order_helper.php');
+require_once(BASE_HELPER_PATH . '/bonus_helper.php');
+
+use mcard;
 
 class TestMemberCard extends TestCase
 {
@@ -27,6 +30,13 @@ class TestMemberCard extends TestCase
         Base::run_util();
     }
 
+    public function testGetOils()
+    {
+        $ret = mcard\getTopcardInfo('oil',36490);
+    }
+
+
+
     public function testAddMemberCard()
     {
         $usercards = new mcard\user_mcards($this->member_id);
@@ -119,10 +129,8 @@ class TestMemberCard extends TestCase
         $logic->OnMCardPaidSuccess(['order_sn' => '580648112029501620']);
     }
 
+
     public function testStrict()
     {
-        $fun = function (...$ints) {
-            return array_sum($ints);
-        };
     }
 }