dever 3 years ago
parent
commit
f1ef31cfce

+ 1 - 1
app/factory/assets/pc/html/setGoods.html

@@ -45,7 +45,7 @@
                         <button class="layui-btn layui-btn-button" type="button" style="vertical-align: middle;margin-bottom: 2px;" onclick="setFactory()">确认选择</button>
                     </div>
                 </div>
-                <div class="goods_list">
+                <div class="goods_list" style="height:645px;">
                     <table class="layui-table">
                         <thead>
                             <tr>

+ 2 - 7
app/goods/database/info_sku.php

@@ -1,11 +1,6 @@
 <?php
 
-$type = array
-(
-    1 => '普通属性',
-    2 => '组合属性',
-    3 => '单选属性',
-);
+$type = Dever::db('attr/info')->config['sell_type'];
 $config = array
 (
     # 表名
@@ -64,7 +59,7 @@ $config = array
         (
             'type'      => 'tinyint-1',
             'name'      => '属性类型',
-            'default'   => '2',
+            'default'   => '1',
             'desc'      => '属性类型',
             'match'     => 'is_numeric',
             'update'    => 'radio',

+ 72 - 64
app/goods/lib/Info.php

@@ -241,7 +241,7 @@ class Info
     }
 
     # 获取支付所需要的信息
-    public function getPayInfo($id, $sku = 0, $type = 1)
+    public function getPayInfo($id, $sku = 0, $type = 1, $value = '')
     {
         $info = is_array($id) ? $id : Dever::db($this->table_info)->find($id);
 
@@ -257,9 +257,28 @@ class Info
             if ($sku > 0) {
                 $where['info_id'] = $info['id'];
                 $where['id'] = $sku;
-                $where['type'] = 2;
                 $sku = Dever::db('goods/info_sku')->find($where);
                 if ($sku) {
+
+                    if ($sku['type'] == 3) {
+                        $price = $sku['price'];
+                        $s_price = $sku['s_price'];
+                        $f_price = $sku['f_price'];
+                        $sku['price'] = 0;
+                        $sku['s_price'] = 0;
+                        $sku['f_price'] = 0;
+                        # 计算价格
+                        $key = explode('_', $sku['key']);
+                        $attr = Dever::db('attr/info')->find($key[0]);
+                        if ($attr) {
+                            if ($value >= $attr['sell_value']) {
+                                $sku['price'] = $price;
+                                $sku['s_price'] = $s_price;
+                                $sku['f_price'] = $f_price;
+                            }
+                        }
+                    }
+
                     $info['sku_id'] = $sku['id'];
                     if ($type == 2) {
                         $info['price'] = $sku['f_price'];
@@ -359,7 +378,7 @@ class Info
         }
         
         if ($info && $attr) {
-            $info = $this->info($info, $order, $other, false, $user, $reward);
+            $info = $this->info($info, $order, $other, $user, $reward);
         } else {
             $this->getGroup($info);
         }
@@ -404,7 +423,7 @@ class Info
     }
 
     # 获取基本信息
-    public function info($info, $key = 'view_reorder', $other = false, $is_sell = false, $user = array(), $reward = false)
+    public function info($info, $key = 'view_reorder', $other = false, $user = array(), $reward = false)
     {
         $info['category_array'] = Dever::load('category/api')->string($info['category']);
         if ($info['price_type'] == 2) {
@@ -412,11 +431,12 @@ class Info
             $attr = $this->setAttr($info['category'], $key);
             $attr_data = $attr->one($info['id']);
 
-            $info['attr'] = $info['sell_attr'] = $info['option_attr'] = array();
+            $info['attr'] = $info['group_attr'] = $info['single_attr']  = $info['input_attr'] = array();
 
             if ($attr->config['attr']) {
+                $i = 0;
                 foreach ($attr->config['attr'] as $k => $v) {
-                    if (isset($v[$key]) && $v[$key] > 0) {
+                    if (isset($v[$key]) && $v[$key] > 0 && $v['state'] == 1) {
                         if (isset($attr_data['attr_' . $v['id']])) {
                             $v['value'] = $attr_data['attr_' . $v['id']];
                         } else {
@@ -427,20 +447,15 @@ class Info
                         $v['value_string'] = Dever::load('attr/api')->getValue($v);
                         
                         if ($v['ename'] == 'price') {
-                            $info['price_array'] = $v['value_string'];
+                            $info['price'] = $v['value_string'];
                         } else {
-                            $v['bg'] = 'background-image: url('.$v['icon'].')';
-                            $v['pic'] = '<img src="'.$v['icon'].'" width="18" />';
-                            if ($is_sell > 0) {
-                                if ($is_sell == $v['is_sell']) {
-                                    $info['attr'][] = $v;
-                                }
-                                
-                            } else {
-                                $info['attr'][] = $v;
-                                # 设置sku
-                                $this->sku($v, $info);
+                            if ($v['icon']) {
+                                $v['bg'] = 'background-image: url('.$v['icon'].')';
+                                $v['pic'] = '<img src="'.$v['icon'].'" width="18" />';
                             }
+                            
+                            $info['attr'][$i] = $this->attr($i, $v, $info);
+                            $i++;
                         }
                     }
                 }
@@ -464,6 +479,7 @@ class Info
 
 
         //$info['freight'] = 0;
+        //unset($info['goods']);
         unset($info['f_price']);
         unset($info['cdate']);
         unset($info['udate']);
@@ -565,35 +581,33 @@ class Info
         return $freight;
     }
 
-    private function sku($data, &$info)
+    private function attr($key, $data, &$info)
     {
         # 获取销售属性
-        if ($data['is_sell'] > 1) {
-            if ($data['option']) {
-                $value = explode(',', $data['value']);
-                foreach($data['option'] as $k => $v) {
-                    if (in_array($v['id'], $value)) {
-                        $key = $v['info_id'] . '-' . $v['id'];
-                        $info['option_sku'][$key] = $data['option_sku'][] = array
-                        (
-                            'id' => $v['id'],
-                            'info_id' => $v['info_id'],
-                            'name' => $v['name'],
-                            'parent_name' => $data['name'],
-                            'icon' => $v['icon'],
-                            'value' => $key,
-                        );
-                    }
+        if ($data['option']) {
+            $value = explode(',', $data['value']);
+            $option = $data['option'];
+            $data['option'] = array();
+            foreach ($value as $k => $v) {
+                if (isset($option[$v])) {
+                    $option[$v]['parent_name'] = $data['name'];
+                    $data['option'][] = $info['option'][$option[$v]['price_key']] = $option[$v];
                 }
-                unset($data['option']);
             }
-
-            if ($data['is_sell'] == 2) {
-                $info['sell_attr'][] = $data;
-            } elseif ($data['is_sell'] == 3) {
-                $info['option_attr'][] = $data;
+        } else {
+            unset($data['option']);
+        }
+        if ($data['is_sell'] == 2) {
+            if ($data['sell_type'] == 1) {
+                $info['group_attr'][] = $key;
+            } elseif ($data['sell_type'] == 2) {
+                $info['single_attr'][] = $key;
+            } elseif ($data['sell_type'] == 3) {
+                $info['input_attr'][] = $key;
             }
         }
+
+        return $data;
     }
 
     private function getPrice(&$info, $other = false)
@@ -603,31 +617,25 @@ class Info
         $info['price_array'] = array();
         $list = Dever::db('goods/info_sku')->getData($where);
 
-        $info['price_array']['sku'] = $info['price_array']['option'] = $info['price_array']['main'] = array();
-
         $min = $max = array();
         if ($list) {
             foreach ($list as $k => $v) {
-
                 if ($v['key']) {
-                    if ($v['key'] == -1) {
-                        $info['price_array']['main'] = $v;
-                    } elseif ($v['type'] == 2) {
-                        $v['name'] = array();
-                        $temp = explode('_', $v['key']);
-                        foreach ($temp as $k1 => $v1) {
-                            if (isset($info['option_sku'][$v1])) {
-                                $v['name'][] = $info['option_sku'][$v1]['name'];
-                            }
+                    $v['name'] = array();
+                    $temp = explode('_', $v['key']);
+                    foreach ($temp as $k1 => $v1) {
+                        if (isset($info['option'][$v1])) {
+                            $v['name'][] = $info['option'][$v1]['name'];
                         }
-                        $v['name'] = implode(';', $v['name']);
+                    }
+                    $v['name'] = implode(',', $v['name']);
 
-                        if ($other) {
-                            foreach ($other[1] as $k1 => $v1) {
-                                $v[$v1] = isset($other[0][$v['id']][$v1]) ? $other[0][$v['id']][$v1] : 0;
-                            }
+                    if ($other) {
+                        foreach ($other[1] as $k1 => $v1) {
+                            $v[$v1] = isset($other[0][$v['id']][$v1]) ? $other[0][$v['id']][$v1] : 0;
                         }
-                        $info['price_array']['sku'][$v['key']] = $v;
+                    }
+                    if ($v['type'] == 1) {
                         if (!$min) {
                             $min = $v;
                         }
@@ -642,21 +650,21 @@ class Info
                         if ($max['price'] < $v['price']) {
                             $max = $v;
                         }
-                    } elseif ($v['type'] == 3) {
-                        $info['price_array']['option'][$v['key']] = $v;
                     }
+
+                    $info['price_array'][$v['key']] = $v;
                 }
             }
         }
-        $info['price_array']['sku_min'] = $min;
-        $info['price_array']['sku_max'] = $max;
+        $info['price_min'] = $min;
+        $info['price_max'] = $max;
 
         if ($min) {
             $info['price'] = $min['price'];
             $info['s_price'] = $min['s_price'];
             $info['sku_id'] = $min['id'];
         }
-        unset($info['option_sku']);
+        unset($info['option']);
     }
 
     public function getInfoLink($info)

+ 19 - 19
app/goods/lib/Manage.php

@@ -374,10 +374,7 @@ class Manage
                     if ($type == 'factory_id') {
                         if ($other) {
                             $result[$k]['p_price'] = $other['p_price'];
-                            if ($other['state'] == 1) {
-                                $result[$k]['select'] = 1;
-                            }
-                            
+                            $result[$k]['select'] = $other['state'];
                         } else {
                             $result[$k]['p_price'] = $v['price'];
                         }
@@ -395,28 +392,31 @@ class Manage
                                 $v1['sku_name'] = $v1['attr']['string'];
                             }
 
-                            $other_sku = Dever::db($table)->one(array($type => $id, 'goods_id' => $v['id'], 'sku_id' => $v1['id']));
-
-                            $p_price = $v1['price'];
-                            $select = 2;
-                            if ($type == 'factory_id') {
-                                if ($other_sku) {
-                                    $p_price = $other_sku['p_price'];
-                                    if ($other_sku['state'] == 1) {
-                                        $select = 1;
-                                    }
-                                } 
+                            $name = $v['name'];
+                            if ($v1['sku_name']) {
+                                $name .= '-' . $v1['sku_name'];
                             }
 
-                            $result[$k]['children'][] = array
+                            $children = array
                             (
                                 'id' => $v['id'] . '-' . $v1['id'],
-                                'name' => $v['name'] . '-' . $v1['sku_name'],
+                                'name' => $name,
                                 'price' => $v1['price'] ? $v1['price'] : 0,
-                                'p_price' => $p_price,
-                                'select' => $select,
                                 'end' => true,
                             );
+
+                            $other_sku = Dever::db($table)->one(array($type => $id, 'goods_id' => $v['id'], 'sku_id' => $v1['id']));
+
+                            $children['select'] = 2;
+                            if ($type == 'factory_id') {
+                                $children['p_price'] = $v1['price'];
+                                if ($other_sku) {
+                                    $children['p_price'] = $other_sku['p_price'];
+                                    $children['select'] = $other_sku['state'];
+                                }
+                            }
+
+                            $result[$k]['children'][] = $children;
                         }
                     }
                 }

+ 180 - 43
app/goods/lib/Sku.php

@@ -35,8 +35,10 @@ class Sku
         
         $data['attr'] = Dever::input('attr');
         $data['key'] = Dever::input('key');
-        $data['option_attr'] = Dever::input('option_attr');
-        $data['option_key'] = Dever::input('option_key');
+        $data['single_attr'] = Dever::input('single_attr');
+        $data['single_key'] = Dever::input('single_key');
+        $data['input_attr'] = Dever::input('input_attr');
+        $data['input_key'] = Dever::input('input_key');
         $data['hook'] = Dever::input('hook');
 
         $data['set'] = $this->getSet($data['other']);
@@ -202,19 +204,68 @@ class Sku
             }
         }
 
-        if ($config['option_key']) {
+        if ($config['single_key']) {
 
-            if (!is_array($config['option_key'])) {
-                $config['option_key'] = explode(',', $config['option_key']);
+            if (!is_array($config['single_key'])) {
+                $config['single_key'] = explode(',', $config['single_key']);
             }
-            foreach ($config['option_key'] as $k => $v) {
+            foreach ($config['single_key'] as $k => $v) {
+                $type = 2;
+                if (strstr($v, '||')) {
+                    $temp = explode('||', $v);
+                    $v = $temp[0];
+                    $type = $temp[1];
+                }
+                if (isset($config['single_attr'][$k])) {
+                    
+                    $data = $where;
+                    if ($config['other']) {
+                        $sku = Dever::db('goods/info_sku')->one(array('key' => $v, 'info_id' => $config['goods_id']));
+                        if (!$sku) {
+                            continue;
+                        }
+                        $data[$key] = $sku['id'];
+
+                        $info = Dever::db($sku_table)->one($data);
+                    } else {
+                        $info = Dever::db('goods/info_sku')->one(array('key' => $v, 'info_id' => $config['goods_id']));
+                        $data['attr'] = $config['single_attr'][$k];
+                        $data[$key] = $v;
+                    }
+
+                    $data['type'] = $type;
+                    
+                    foreach ($config['set']['col'] as $k1 => $v1) {
+                        $value = Dever::input('single_' . $k1);
+                        if (isset($value[$k])) {
+                            $data[$k1] = $value[$k];
+                        }
+                    }
+
+                    Dever::config('base')->hook = false;
+                    if (!$info) {
+                        $temp = Dever::db($sku_table)->insert($data);
+                    } else {
+                        $data['where_id'] = $info['id'];
+                        Dever::db($sku_table)->update($data);
+                    }
+                }
+            }
+        }
+
+        if ($config['input_key']) {
+
+            if (!is_array($config['input_key'])) {
+                $config['input_key'] = explode(',', $config['input_key']);
+            }
+            foreach ($config['input_key'] as $k => $v) {
                 $type = 3;
                 if (strstr($v, '||')) {
                     $temp = explode('||', $v);
                     $v = $temp[0];
                     $type = $temp[1];
                 }
-                if (isset($config['option_attr'][$k])) {
+                if (isset($config['input_key'][$k])) {
                     
                     $data = $where;
                     if ($config['other']) {
@@ -227,14 +278,14 @@ class Sku
                         $info = Dever::db($sku_table)->one($data);
                     } else {
                         $info = Dever::db('goods/info_sku')->one(array('key' => $v, 'info_id' => $config['goods_id']));
-                        $data['attr'] = $config['option_attr'][$k];
+                        $data['attr'] = $config['input_key'][$k];
                         $data[$key] = $v;
                     }
 
                     $data['type'] = $type;
                     
                     foreach ($config['set']['col'] as $k1 => $v1) {
-                        $value = Dever::input('option_' . $k1);
+                        $value = Dever::input('input_' . $k1);
                         if (isset($value[$k])) {
                             $data[$k1] = $value[$k];
                         }
@@ -294,33 +345,43 @@ class Sku
 
         $sku = Dever::db('goods/info_sku')->getDataByKeys(array('info_id' => $info['id']));
 
-        $sell_attr = $option_attr = array();
-        $head = $option_head = '<thead><tr>';
+        $group_attr = $single_attr = $input_attr = array();
+        $head = $single_head = $input_head = '<thead><tr>';
         $html = '请先选择属性';
 
         if ($parent_goods) {
             $head .= '<th>商品名称</th>';
-            $option_head .= '<th>商品名称</th>';
+            $single_head .= '<th>商品名称</th>';
+            $input_head .= '<th>商品名称</th>';
         }
 
-        if (isset($info['sell_attr']) && $info['sell_attr']) {
-            foreach ($info['sell_attr'] as $k => $v) {
-                $head .= '<th>'.$v['name'].'</th>';
-                if (isset($v['option_sku'])) {
-                    $sell_attr[$k] = $v['option_sku'];
+        if (isset($info['group_attr']) && $info['group_attr']) {
+            foreach ($info['group_attr'] as $k => $v) {
+                if (isset($info['attr'][$v]['option'])) {
+                    $group_attr[$k] = $info['attr'][$v]['option'];
+                    $head .= '<th>'.$info['attr'][$v]['name'].'</th>';
                 }
             }
         }
 
-        if (isset($info['option_attr']) && $info['option_attr']) {
-            $option_head .= '<th>属性名称</th>';
-            foreach ($info['option_attr'] as $k => $v) {
-                if (isset($v['option_sku'])) {
-                    $option_attr = array_merge($option_attr, $v['option_sku']);
+        if (isset($info['single_attr']) && $info['single_attr']) {
+            $single_head .= '<th>属性名称</th>';
+            foreach ($info['single_attr'] as $k => $v) {
+                if (isset($info['attr'][$v]['option'])) {
+                    $single_attr = array_merge($single_attr, $info['attr'][$v]['option']);
                 }
             }
         }
 
+        if (isset($info['input_attr']) && $info['input_attr']) {
+            $input_head .= '<th>属性名称</th>';
+            $input_head .= '<th>起算</th>';
+            foreach ($info['input_attr'] as $k => $v) {
+                if (isset($info['attr'][$v]['option'])) {
+                    $input_attr[$k] = $info['attr'][$v];
+                }
+            }
+        }
 
         $col_num = 0;
         
@@ -337,18 +398,21 @@ class Sku
             }
             
             $head .= '<th>'.$v.'</th>';
-            $option_head .= '<th>'.$v.'</th>';
+            $single_head .= '<th>'.$v.'</th>';
+            $input_head .= '<th>'.$v.'</th>';
         }
         
         $head .= '</tr></thead>';
-        $option_head .= '</tr></thead>';
+        $single_head .= '</tr></thead>';
+        $input_head .= '</tr></thead>';
 
         $body = '<tbody>';
-        $option_body = '<tbody>';
+        $single_body = '<tbody>';
+        $input_body = '<tbody>';
 
-        if (!$sell_attr) {
+        if (!$group_attr) {
 
-            $prefix = '[价设置]:';
+            $prefix = '[价设置]:';
 
             if (!$update && $col_num <= 1) {
                 $head = '';
@@ -393,13 +457,13 @@ class Sku
 
         } else {
             
-            $prefix = '[多价设置]:';
+            $prefix = '[组合价格设置]:';
 
-            $sell_attr = Dever::cartesian($sell_attr);
+            $group_attr = Dever::cartesian($group_attr);
 
             $show = false;
 
-            foreach ($sell_attr as $k => $v) {
+            foreach ($group_attr as $k => $v) {
                 $body .= '<tr data-row="' .($k+1). '">';
 
                 if ($parent_goods) {
@@ -446,7 +510,6 @@ class Sku
                 }
 
                 if ($update) {
-                    $key .= '||2';
                     $body .= '<input type="hidden" name="key['.$k.']" value="'.$key.'"/><textarea style="display:none;" name="attr['.$k.']">'.json_encode($id).'</textarea>';
                 }
                 
@@ -464,19 +527,19 @@ class Sku
             $html = '<table class="layui-table">' . $html . '</table>';
         }
 
-        if ($option_attr) {
+        if ($single_attr) {
             $html = $prefix . $html;
-            foreach ($option_attr as $k => $v) {
+            foreach ($single_attr as $k => $v) {
 
                 $id = array();
-                $option_body .= '<tr data-row="' .($k+1). '">';
+                $single_body .= '<tr data-row="' .($k+1). '">';
 
                 if ($parent_goods) {
-                    $option_body .= '<td>'.$parent_goods['name'].'</td>';
+                    $single_body .= '<td>'.$parent_goods['name'].'</td>';
                 }
 
                 $rows = 1;
-                $option_body .= '<td width="50" rowspan="'.$rows.'">'. $v['parent_name'].'->'. $v['name'].'</td>';
+                $single_body .= '<td width="100" rowspan="'.$rows.'">'. $v['parent_name'].'->'. $v['name'].'</td>';
                 $id[] = array
                 (
                     'id' => $v['id'],
@@ -500,28 +563,102 @@ class Sku
                     if ($update) {
                         if (strstr($v1, '|')) {
                             $v1 = str_replace('|', '', $v1);
-                            $option_body .= '<td width="30">'.$value.'</td>';
+                            $single_body .= '<td width="30">'.$value.'</td>';
+                        } else {
+                            $single_body .= '<td width="30"><input type="text" class="layui-input" name="single_'.$k1.'['.$k.']"  value="'.$value.'"/></td>';
+                        }
+                        
+                    } else {
+                        $single_body .= '<td width="30">'.$value.'</td>';
+                    }
+                }
+
+                if ($update) {
+                    $single_body .= '<input type="hidden" name="single_key['.$k.']" value="'.$key.'"/><textarea style="display:none;" name="single_attr['.$k.']">'.json_encode($id).'</textarea>';
+                }
+                
+                $single_body .= '</tr>';
+            }
+
+            $html = $html . '<br />[单选价格设置]:<table class="layui-table">' . $single_head . $single_body . '</table>';;
+        }
+
+        if ($input_attr) {
+            foreach ($input_attr as $k => $v) {
+
+                if ($v['sell_compute'] == 2) {
+                    $v['sell_compute_type'] = '+';
+                } elseif ($v['sell_compute'] == 3) {
+                    $v['sell_compute_type'] = '-';
+                } else {
+                    $v['sell_compute_type'] = '*';
+                }
+
+                $id = array();
+                $input_body .= '<tr data-row="' .($k+1). '">';
+
+                if ($parent_goods) {
+                    $input_body .= '<td>'.$parent_goods['name'].'</td>';
+                }
+
+                $rows = 1;
+                $key = $id = $name = array();
+                foreach ($v['option'] as $k1 => $v1) {
+                    $id[] = array
+                    (
+                        'id' => $v1['id'],
+                        'attr_id' => $v1['info_id'],
+                    );
+                    $key[] = $v1['price_key'];
+                    $name[] = $v1['name'];
+                }
+                $key = implode('_', $key);
+                $input_body .= '<td width="100" rowspan="'.$rows.'">'. $v['name'].'->'. implode($v['sell_compute_type'], $name).'</td>';
+                $input_body .= '<td width="5"> >='.$v['sell_value'].'</td>';
+                foreach ($set['col'] as $k1 => $v1) {
+                    if (!$update && strstr($v1, '^')) {
+                        continue;
+                    } 
+                    $value = '';
+                    if (isset($sku[$key])) {
+                        if (isset($sku_value[$sku[$key]['id']][$k1])) {
+                            $value = $sku_value[$sku[$key]['id']][$k1];
+                        } elseif (isset($sku[$key][$k1])) {
+                            $value = $sku[$key][$k1];
+                        }
+                    }
+                    
+                    if ($update) {
+                        if (strstr($v1, '|')) {
+                            $v1 = str_replace('|', '', $v1);
+                            $input_body .= '<td width="30">'.$value.'</td>';
                         } else {
-                            $option_body .= '<td width="30"><input type="text" class="layui-input" name="option_'.$k1.'['.$k.']"  value="'.$value.'"/></td>';
+                            $input_body .= '<td width="30"><input type="text" class="layui-input" name="input_'.$k1.'['.$k.']"  value="'.$value.'"/></td>';
                         }
                         
                     } else {
-                        $option_body .= '<td width="30">'.$value.'</td>';
+                        $input_body .= '<td width="30">'.$value.'</td>';
                     }
                 }
 
                 if ($update) {
-                    $key .= '||3';
-                    $option_body .= '<input type="hidden" name="option_key['.$k.']" value="'.$key.'"/><textarea style="display:none;" name="option_attr['.$k.']">'.json_encode($id).'</textarea>';
+                    $input_body .= '<input type="hidden" name="input_key['.$k.']" value="'.$key.'"/><textarea style="display:none;" name="input_attr['.$k.']">'.json_encode($id).'</textarea>';
                 }
                 
-                $option_body .= '</tr>';
+                $input_body .= '</tr>';
             }
 
-            $html = $html . '<br />[加价设置]:<table class="layui-table">' . $option_head . $option_body . '</table>';;
+            $html = $html . '<br />[计算价设置]:<table class="layui-table">' . $input_head . $input_body . '</table>';;
         }
         
 
         return $html;
     }
+
+    private function create_table($head, $body)
+    {
+        $html = '<table class="layui-table">';
+
+
+    }
 }

+ 2 - 2
app/mshop/src/Out.php

@@ -165,12 +165,12 @@ class Out extends Core
 	            $state = Dever::db('shop/out_order_goods')->insert($data);
 	            if ($state) {
 	            	# 出库成功 去掉库存
-	            	Dever::load('shop/lib/goods')->oper(2, 1, array($data));
+	            	Dever::load('shop/lib/goods')->oper($order_data, 2, 1, array($data));
 	            }
 	        }
         }
 
-        return 'ok';
+        return array('order_id' => $id);
     }
 
     # 生成订单号

+ 9 - 0
app/shop/database/buy_order_goods.php

@@ -59,6 +59,15 @@ return array
             'match'     => 'is_numeric',
         ),
 
+        'extend'       => array
+        (
+            'type'      => 'text-255',
+            'name'      => '扩展信息',
+            'default'   => '',
+            'desc'      => '扩展信息',
+            'match'     => 'option',
+        ),
+
         'price'      => array
         (
             'type'      => 'varchar-50',

+ 5 - 2
app/shop/database/goods.php

@@ -8,7 +8,7 @@ return array
     'lang' => '商品列表',
     'order' => 10,
     'menu'  => false,
-    'end' => array
+    'ends' => array
     (
         'insert' => 'shop/lib/manage.goodsUpdate',
         'update' => 'shop/lib/manage.goodsUpdate',
@@ -140,10 +140,13 @@ return array
 
     'manage' => array
     (
+        'insert' => false,
+        'edit' => false,
+        'delete' => false,
         # 列表里的按钮
         'list_button' => array
         (
-            'fast_list' => array('库存设置', '"info_sku&project=goods&goods_id={goods_id}&other=shop&other_id={shop_id}&page_type=1"', '{price_type} <= 3'),
+            //'fast_list' => array('库存设置', '"info_sku&project=goods&goods_id={goods_id}&other=shop&other_id={shop_id}&page_type=1"', '{price_type} <= 3'),
         ),
     ),
 

+ 3 - 1
app/shop/lib/Goods.php

@@ -58,13 +58,15 @@ class Goods
         $table = 'shop';
         if (isset($order['shop_id'])) {
             $up['where_shop_id'] = $order['shop_id'];
-        } else {
+        } elseif (isset($order['type'])) {
             if ($order['type'] == 1) {
                 $up['where_shop_id'] = $order['type_id'];
             } elseif ($order['type'] == 2) {
                 $table = 'store';
                 $up['where_store_id'] = $order['type_id'];
             }
+        } else {
+            return false;
         }
         foreach ($data as $k => $v) {
             if (!$v['sku_id']) {

+ 15 - 0
app/shop/lib/Sell.php

@@ -454,6 +454,21 @@ class Sell
             if ($sku_id) {
                 $sku_id = explode(',', $sku_id);
             }
+
+            $single_id = Dever::input('single_id');
+            if ($single_id) {
+                $single_id = explode(',', $single_id);
+            }
+
+            $input_id = Dever::input('input_id');
+            if ($input_id) {
+                $input_id = explode(',', $input_id);
+            }
+
+            $input_value = Dever::input('input_value');
+            if ($input_value) {
+                $input_value = explode(',', $input_value);
+            }
             
             $num = Dever::input('num');
             if (!$num) {

+ 6 - 2
app/store/database/goods.php

@@ -7,7 +7,7 @@ return array
     'lang' => '商品列表',
     'order' => 10,
     'menu'  => false,
-    'end' => array
+    'ends' => array
     (
         'insert' => 'store/lib/manage.goodsUpdate',
         'update' => 'store/lib/manage.goodsUpdate',
@@ -139,10 +139,14 @@ return array
 
     'manage' => array
     (
+        'insert' => false,
+        'edit' => false,
+        'delete' => false,
+        
         # 列表里的按钮
         'list_button' => array
         (
-            'fast_list' => array('库存设置', '"info_sku&project=goods&goods_id={goods_id}&other=store&other_id={store_id}&page_type=1"'),
+            //'fast_list' => array('库存设置', '"info_sku&project=goods&goods_id={goods_id}&other=store&other_id={store_id}&page_type=1"'),
         ),
     ),
 

+ 1 - 1
app/store/database/info.php

@@ -313,7 +313,7 @@ return array
     (
         'list_button' => array
         (
-            'add' => array('设置库存清单', '"info&where_id={id}&col=goods&oper_save_jump=info&oper_table=info&oper_parent=info"'),
+            //'add' => array('设置库存清单', '"info&where_id={id}&col=goods&oper_save_jump=info&oper_table=info&oper_parent=info"'),
 
             'list3' => array('商品列表', '"goods&search_option_factory_id={id}&oper_table=info"'),