dever 3 lat temu
rodzic
commit
aa6ac9c0a4
43 zmienionych plików z 3810 dodań i 237 usunięć
  1. 32 0
      app/factory/admin/Excel.php
  2. 47 11
      app/factory/admin/Order.php
  3. 77 28
      app/mshop/lib/Buy.php
  4. 3 3
      app/shop/database/buy_order.php
  5. 14 0
      app/shop/database/info.php
  6. 28 2
      app/shop/lib/Refund.php
  7. 20 14
      app/shop/lib/Sell.php
  8. 2 2
      app/shop/src/Yspay.php
  9. 1 1
      app/store/admin/Auth.php
  10. 38 1
      app/store/admin/Excel.php
  11. 16 0
      app/store/admin/Factory_excel.php
  12. 45 9
      app/store/admin/Order.php
  13. 1 0
      main/database/help.php
  14. 27 0
      service/agent/assets/manage/html/dh_order_goods.html
  15. 541 0
      service/agent/database/dh_order.php
  16. 227 0
      service/agent/database/dh_order_goods.php
  17. 153 0
      service/agent/database/dh_order_ps.php
  18. 179 0
      service/agent/database/dh_order_refund.php
  19. 36 7
      service/agent/database/member.php
  20. 236 0
      service/agent/database/member_address.php
  21. 25 0
      service/agent/database/member_area.php
  22. 2 1
      service/agent/database/member_goods.php
  23. 70 5
      service/agent/database/order.php
  24. 12 1
      service/agent/database/order_cash.php
  25. 21 8
      service/agent/database/order_process.php
  26. 828 0
      service/agent/lib/Dhorder.php
  27. 82 11
      service/agent/lib/Manage.php
  28. 28 8
      service/agent/lib/Member.php
  29. 133 76
      service/agent/lib/Order.php
  30. 4 1
      service/agent/lib/Order_set.php
  31. 3 2
      service/agent/lib/Set.php
  32. 166 0
      service/agent/src/Address.php
  33. 3 1
      service/agent/src/Auth.php
  34. 175 15
      service/agent/src/My.php
  35. 5 0
      service/agent/template/manage/dh_order_goods.php
  36. 217 0
      service/bill/database/cash.php
  37. 149 0
      service/bill/database/sell.php
  38. 8 0
      service/bill/index.php
  39. 46 0
      service/bill/lib/Cash.php
  40. 57 0
      service/bill/lib/Sell.php
  41. 25 4
      service/setting/database/base.php
  42. 6 6
      service/setting/database/level.php
  43. 22 20
      service/setting/database/role.php

+ 32 - 0
app/factory/admin/Excel.php

@@ -79,6 +79,22 @@ class Excel extends Core
                         $v['type_info']['address'] = '';
                     }
                 }
+            } elseif ($v['parent_type'] == 3) {
+                $parent_order = Dever::db('agent/dh_order')->find($v['parent_order_id']);
+
+                if ($parent_order && $parent_order['mid']) {
+                    if ($parent_order['address_id']) {
+                        $address = Dever::load('agent/address')->getOne($parent_order['mid'], $parent_order['address_id']);
+                        $v['type_info']['name'] = $address['contact'];
+                        $v['type_info']['mobile'] = $address['mobile'];
+                        $v['type_info']['address'] = $address['address_info'];
+                    } else {
+                        $address = Dever::db('agent/member')->find($parent_order['mid']);
+                        $v['type_info']['name'] = $address['name'];
+                        $v['type_info']['mobile'] = $address['mobile'];
+                        $v['type_info']['address'] = '';
+                    }
+                }
             }
 
             foreach ($v['goods'] as $k1 => $v1) {
@@ -161,6 +177,22 @@ class Excel extends Core
                         $v['type_info']['address'] = '';
                     }
                 }
+            } elseif ($v['parent_type'] == 3) {
+                $parent_order = Dever::db('agent/dh_order')->find($v['parent_order_id']);
+
+                if ($parent_order && $parent_order['mid']) {
+                    if ($parent_order['address_id']) {
+                        $address = Dever::load('agent/address')->getOne($parent_order['mid'], $parent_order['address_id']);
+                        $v['type_info']['truename'] = $address['contact'];
+                        $v['type_info']['mobile'] = $address['mobile'];
+                        $v['type_info']['address'] = $address['address_info'];
+                    } else {
+                        $address = Dever::db('agent/member')->find($parent_order['mid']);
+                        $v['type_info']['truename'] = $address['name'];
+                        $v['type_info']['mobile'] = $address['mobile'];
+                        $v['type_info']['address'] = '';
+                    }
+                }
             }
             
             foreach ($v['goods'] as $k1 => $v1) {

+ 47 - 11
app/factory/admin/Order.php

@@ -67,19 +67,32 @@ class Order extends Core
                 $order = array();
                 if ($v['parent_type'] == 2) {
                     $order = Dever::db('shop/sell_order')->find($v['parent_order_id']);
-                }
-
-                if ($order && $order['uid']) {
-                    if ($order['address_id']) {
-                        $order['address'] = Dever::load('passport/address')->getOne($order['uid'], $order['address_id']);
-
-                        $v['type_info']['name'] = $order['address']['contact'];
-                    } else {
-                        $user = Dever::db('passport/user')->find($order['uid']);
-                        $v['type_info']['name'] = $user['username'];
+                    if ($order && $order['uid']) {
+                        if ($order['address_id']) {
+                            $order['address'] = Dever::load('passport/address')->getOne($order['uid'], $order['address_id']);
+
+                            $v['type_info']['name'] = $order['address']['contact'];
+                        } else {
+                            $user = Dever::db('passport/user')->find($order['uid']);
+                            $v['type_info']['name'] = $user['username'];
+                        }
+                    }
+                } elseif ($v['parent_type'] == 3) {
+                    $order = Dever::db('agent/dh_order')->find($v['parent_order_id']);
+                    if ($order && $order['mid']) {
+                        if ($order['address_id']) {
+                            $order['address'] = Dever::load('agent/address')->getOne($order['mid'], $order['address_id']);
+
+                            $v['type_info']['name'] = $order['address']['contact'];
+                        } else {
+                            $user = Dever::db('agent/member')->find($order['mid']);
+                            $v['type_info']['name'] = $user['name'];
+                        }
                     }
                 }
 
+                
+
                 $v['out_status_name'] = $out_status[$v['source_out_status']];
 
                 $dao_date = '-';
@@ -256,7 +269,30 @@ class Order extends Core
                         foreach ($ps_info as $k => $v) {
                             $v['service'] = Dever::array_decode($v['service']);
                             foreach ($v['service'] as $k1 => $v1) {
-                                Dever::load('shop/lib/sell')->updatePs($sell_order, 2, $v1['service_id'], $v1['order_num']);
+                                if (isset($v1['order_num']) && $v1['order_num']) {
+                                    Dever::load('shop/lib/sell')->updatePs($sell_order, 2, $v1['service_id'], $v1['order_num']);
+                                }
+                                
+                            }
+                        }
+                    }
+                } elseif ($order['parent_type'] == 3) {
+                    Dever::db('agent/dh_order')->update(array('where_id' => $order['parent_order_id'], 'status' => 4));
+
+                    $data = Dever::db('shop/buy_order')->getDataToId(array('parent_type' => $order['parent_type'], 'parent_order_id' => $order['parent_order_id']));
+
+                    $data = array_keys($data);
+                    
+                    $ps_info = Dever::db('shop/buy_order_ps')->getData(array('order_id' => $data));
+
+                    if ($ps_info) {
+                        $dh_order = array('id' => $order['parent_order_id']);
+                        foreach ($ps_info as $k => $v) {
+                            $v['service'] = Dever::array_decode($v['service']);
+                            foreach ($v['service'] as $k1 => $v1) {
+                                if (isset($v1['order_num']) && $v1['order_num']) {
+                                    Dever::load('agent/lib/dhorder')->updatePs($dh_order, 2, $v1['service_id'], $v1['order_num']);
+                                }
                             }
                         }
                     }

+ 77 - 28
app/mshop/lib/Buy.php

@@ -292,10 +292,14 @@ class Buy
             
             if ($info['ps_info']['service']) {
                 foreach ($info['ps_info']['service'] as $k => $v) {
-                    $info['ps_info']['service'][$k]['service_name'] = '供应商自送';
-                    if ($v['service_id'] > 0) {
-                        $service = Dever::db('shop/service')->find($v['service_id']);
-                        $info['ps_info']['service'][$k]['service_name'] = $service['name'];
+                    if (isset($v['order_num']) && $v['order_num']) {
+                        $info['ps_info']['service'][$k]['service_name'] = '供应商自送';
+                        if ($v['service_id'] > 0) {
+                            $service = Dever::db('shop/service')->find($v['service_id']);
+                            $info['ps_info']['service'][$k]['service_name'] = $service['name'];
+                        }
+                    } else {
+                        unset($info['ps_info']['service'][$k]);
                     }
                 }
             }
@@ -730,9 +734,11 @@ class Buy
         $parent_order = array();
         if ($info['parent_type'] == 2) {
             $parent_order = Dever::db('shop/sell_order')->find($info['parent_order_id']);
+        } elseif ($info['parent_type'] == 3) {
+            $parent_order = Dever::db('agent/dh_order')->find($info['parent_order_id']);
         }
 
-        if ($parent_order && $parent_order['uid']) {
+        if ($parent_order && isset($parent_order['uid']) && $parent_order['uid']) {
             if ($parent_order['address_id']) {
                 $address = Dever::load('passport/address')->getOne($parent_order['uid'], $parent_order['address_id']);
 
@@ -754,6 +760,28 @@ class Buy
                     array('收件人手机', $user['mobile']),
                 );
             }
+        } elseif ($parent_order && isset($parent_order['mid']) && $parent_order['mid']) {
+            if ($parent_order['address_id']) {
+                $address = Dever::load('agent/address')->getOne($parent_order['mid'], $parent_order['address_id']);
+
+                $result[$info['order_num']]['content'][] = array
+                (
+                    array('收件人', $address['contact']),
+                    array('收件人手机', $address['mobile']),
+                );
+                $result[$info['order_num']]['content'][] = array
+                (
+                    array('收货地址', $address['address_info']),
+                    array('门牌号', $address['house_number']),
+                );
+            } else {
+                $user = Dever::db('agent/member')->find($parent_order['mid']);
+                $result[$info['order_num']]['content'][] = array
+                (
+                    array('收件人', $user['mid']),
+                    array('收件人手机', $user['mobile']),
+                );
+            }
         } else {
             $result[$info['order_num']]['content'][] = array
             (
@@ -944,17 +972,19 @@ class Buy
             $service = array();
             if ($info['ps_info']['service']) {
                 foreach ($info['ps_info']['service'] as $k => $v) {
-                    $info['ps_info']['service'][$k]['service_name'] = '供应商自送';
-                    if ($v['service_id'] > 0) {
-                        $service_info = Dever::db('shop/service')->find($v['service_id']);
-                        $info['ps_info']['service'][$k]['service_name'] = $service_info['name'];
-                    }
+                    if (isset($v['order_num']) && $v['order_num']) {
+                        $info['ps_info']['service'][$k]['service_name'] = '供应商自送';
+                        if ($v['service_id'] > 0) {
+                            $service_info = Dever::db('shop/service')->find($v['service_id']);
+                            $info['ps_info']['service'][$k]['service_name'] = $service_info['name'];
+                        }
 
-                    $service[] = array
-                    (
-                        array('名称', $info['ps_info']['service'][$k]['service_name']),
-                        array('单号', $v['order_num']),
-                    );
+                        $service[] = array
+                        (
+                            array('名称', $info['ps_info']['service'][$k]['service_name']),
+                            array('单号', isset($v['order_num']) ? $v['order_num'] : ''),
+                        );
+                    }
                 }
             }
 
@@ -1998,13 +2028,15 @@ class Buy
             
             if ($info['ps_info'] && $info['ps_info']['service']) {
                 foreach ($info['ps_info']['service'] as $k => $v) {
-                    $info['ps_info']['service'][$k]['service_name'] = '供应商自送';
-                    if ($v['service_id'] > 0) {
-                        $service = Dever::db('shop/service')->find($v['service_id']);
-                        $info['ps_info']['service'][$k]['service_name'] = $service['name'];
-                    }
+                    if (isset($v['order_num']) && $v['order_num']) {
+                        $info['ps_info']['service'][$k]['service_name'] = '供应商自送';
+                        if ($v['service_id'] > 0) {
+                            $service = Dever::db('shop/service')->find($v['service_id']);
+                            $info['ps_info']['service'][$k]['service_name'] = $service['name'];
+                        }
 
-                    $pdf->br()->left('物流信息:' . $info['ps_info']['service'][$k]['service_name'], 80)->left('物流单号:' . $info['ps_info']['service'][$k]['order_num'], 40);
+                        $pdf->br()->left('物流信息:' . $info['ps_info']['service'][$k]['service_name'], 80)->left('物流单号:' . $info['ps_info']['service'][$k]['order_num'], 40);
+                    }
                 }
             }
 
@@ -2022,8 +2054,10 @@ class Buy
             $parent_order = array();
             if ($info['parent_type'] == 2) {
                 $parent_order = Dever::db('shop/sell_order')->find($info['parent_order_id']);
+            } elseif ($info['parent_type'] == 3) {
+                $parent_order = Dever::db('agent/dh_order')->find($info['parent_order_id']);
             }
-            if ($parent_order && $parent_order['uid']) {
+            if ($parent_order && isset($parent_order['uid']) && $parent_order['uid']) {
                 if ($parent_order['address_id']) {
                     $address = Dever::load('passport/address')->getOne($parent_order['uid'], $parent_order['address_id']);
 
@@ -2036,6 +2070,19 @@ class Buy
 
                     $pdf->br()->left('收件人:' . $user['username'], 80)->left('收件人手机:' . $user['mobile'], 80);
                 }
+            } elseif ($parent_order && isset($parent_order['mid']) && $parent_order['mid']) {
+                if ($parent_order['address_id']) {
+                    $address = Dever::load('agent/address')->getOne($parent_order['mid'], $parent_order['address_id']);
+
+                    $pdf->br()->left('收件人:' . $address['contact'], 80)->left('收件人手机:' . $address['mobile'], 80);
+
+                    $pdf->left('收件地址:' . $address['address_info'] . ',' . $address['house_number']);
+
+                } else {
+                    $user = Dever::db('agent/member')->find($parent_order['mid']);
+
+                    $pdf->br()->left('收件人:' . $user['name'], 80)->left('收件人手机:' . $user['mobile'], 80);
+                }
             } else {
                 $pdf->br()->left('配送至:' . $type_info['name'], 80)->left('联系方式:' . $type_info['truename'] . ',' . $type_info['mobile'], 80);
 
@@ -2048,13 +2095,15 @@ class Buy
                 $pdf->br()->left('发货时间:' . $info['ps_info']['cdate'], 80)->left('收货时间:' . $info['ps_info']['ydate'], 80);
 
                 foreach ($info['ps_info']['service'] as $k => $v) {
-                    $info['ps_info']['service'][$k]['service_name'] = '供应商自送';
-                    if ($v['service_id'] > 0) {
-                        $service = Dever::db('shop/service')->find($v['service_id']);
-                        $info['ps_info']['service'][$k]['service_name'] = $service['name'];
-                    }
+                    if (isset($v['order_num']) && $v['order_num']) {
+                        $info['ps_info']['service'][$k]['service_name'] = '供应商自送';
+                        if ($v['service_id'] > 0) {
+                            $service = Dever::db('shop/service')->find($v['service_id']);
+                            $info['ps_info']['service'][$k]['service_name'] = $service['name'];
+                        }
 
-                    $pdf->br()->left('物流信息:' . $info['ps_info']['service'][$k]['service_name'], 80)->left('物流单号:' . $info['ps_info']['service'][$k]['order_num'], 80);
+                        $pdf->br()->left('物流信息:' . $info['ps_info']['service'][$k]['service_name'], 80)->left('物流单号:' . $info['ps_info']['service'][$k]['order_num'], 80);
+                    }
                 }
                 /*
                 $pdf->br()->left('发货时间:' . $info['ps_info']['cdate'], 80)->left('配货员:' . $info['ps_info']['phy'], 70)->left('打包员:' . $info['ps_info']['dby'], 40);

+ 3 - 3
app/shop/database/buy_order.php

@@ -707,7 +707,7 @@ $config = array
                 'type_id' => 'yes',
                 'source_type' => 'yes',
                 'source_id' => 'yes',
-                'parent_type' => 'yes',
+                'parent_type' => array('yes', 'in'),
                 'out_status' => 'yes',
                 'source_out_status' => 'yes',
                 'start' => array('yes-cdate', '>='),
@@ -737,7 +737,7 @@ $config = array
                 'type_id' => 'yes',
                 'source_type' => 'yes',
                 'source_id' => 'yes',
-                'parent_type' => 'yes',
+                'parent_type' => array('yes', 'in'),
                 'out_status' => 'yes',
                 'source_out_status' => 'yes',
                 'start' => array('yes-cdate', '>='),
@@ -878,7 +878,7 @@ $config = array
                 'type_id' => 'yes',
                 'source_type' => 'yes',
                 'source_id' => 'yes',
-                'parent_type' => 'yes',
+                'parent_type' => array('yes', 'in'),
                 'parent_order_id' => 'yes',
                 'status' => array('yes', 'in'),
                 'state' => 1,

+ 14 - 0
app/shop/database/info.php

@@ -757,6 +757,7 @@ return array
             # 匹配的正则或函数 选填项
             'option' => array
             (
+                'type' => array('yes', '!='),
                 'town' => 'yes',
                 'area' => array('yes', 'like'),
                 'state' => 1,
@@ -765,5 +766,18 @@ return array
             'order' => array('reorder' => 'desc', 'id' => 'desc'),
             'col' => 'id,id as value, name',
         ),
+
+        'getInfo' => array
+        (
+            # 匹配的正则或函数 选填项
+            'option' => array
+            (
+                'type' => 'yes',
+                'state' => 1,
+            ),
+            'type' => 'one',
+            'order' => array('reorder' => 'desc', 'id' => 'desc'),
+            'col' => 'id,id as value, name',
+        ),
     ),
 );

+ 28 - 2
app/shop/lib/Refund.php

@@ -10,7 +10,12 @@ class Refund
     public function set($type)
     {
         $this->type = $type;
-        if ($type == 'card') {
+        if ($type == 'dh') {
+            $this->order_table = 'agent/dh_order';
+            $this->goods_table = 'agent/dh_order_goods';
+            $this->refund_table = 'agent/dh_order_refund';
+            $this->lib = 'agent/lib/dhorder';
+        } elseif ($type == 'card') {
             $this->order_table = 'card/order';
             $this->goods_table = 'card/order_card';
             $this->refund_table = 'shop/order_refund';
@@ -338,7 +343,12 @@ class Refund
                             $goods_info = Dever::db($this->goods_table)->find($info['order_goods_id']);
                             if ($goods_info) {
 
-                               $sell_order_goods = Dever::db('shop/sell_order_goods')->find(array('order_id' => $order['parent_order_id'], 'goods_id' => $goods_info['goods_id'], 'sku_id' => $goods_info['sku_id']));
+                                if ($order['parent_type'] == 2) {
+                                    $sell_order_goods = Dever::db('shop/sell_order_goods')->find(array('order_id' => $order['parent_order_id'], 'goods_id' => $goods_info['goods_id'], 'sku_id' => $goods_info['sku_id']));
+                                } elseif ($order['parent_type'] == 3) {
+                                    $dh_order_goods = Dever::db('agent/dh_order_goods')->find(array('order_id' => $order['parent_order_id'], 'goods_id' => $goods_info['goods_id'], 'sku_id' => $goods_info['sku_id']));
+                                }
+                                
                             }
                         } elseif (isset($order['shop_type']) && $order['shop_type'] == 2) {
                             # 把关联订单也退掉
@@ -354,6 +364,20 @@ class Refund
                                     }
                                 }
                             }
+                        } elseif (isset($order['mid']) && $order['mid']) {
+                            # 把关联订单也退掉
+                            $buy_order = Dever::db('shop/buy_order')->select(array('parent_type' => 3, 'parent_order_id' => $info['order_id']));
+                            if ($buy_order) {
+                                $goods_info = Dever::db($this->goods_table)->find($info['order_goods_id']);
+                                foreach ($buy_order as $k => $v) {
+                                    $temp = Dever::db('shop/buy_order_goods')->find(array('order_id' => $v['id'], 'goods_id' => $goods_info['goods_id'], 'sku_id' => $goods_info['sku_id']));
+                                    if ($temp) {
+                                        $temp['type'] = $v['type'];
+                                        $temp['type_id'] = $v['type_id'];
+                                        $buy_order_goods = $temp;
+                                    }
+                                }
+                            }
                         }
                     }   
                 }
@@ -412,6 +436,8 @@ class Refund
             Dever::load('shop/lib/refund')->set('sell')->apply(2, $sell_order_goods['shop_id'], $sell_order_goods['order_id'], $sell_order_goods['id'], 2, 0, '退货退款', '', 2, -1);
         } elseif (isset($buy_order_goods) && $buy_order_goods) {
             Dever::load('shop/lib/refund')->set('buy')->apply($buy_order_goods['type'], $buy_order_goods['type_id'], $buy_order_goods['order_id'], $buy_order_goods['id'], $buy_status, 0, $info['desc'], '', 2, -1);
+        } elseif (isset($dh_order_goods) && $dh_order_goods) {
+            Dever::load('shop/lib/refund')->set('dh')->apply(2, $dh_order_goods['shop_id'], $dh_order_goods['order_id'], $dh_order_goods['id'], 2, 0, '退货退款', '', 2, -1);
         }
 
         return 'reload';

+ 20 - 14
app/shop/lib/Sell.php

@@ -246,10 +246,14 @@ class Sell
                 $info['ps_info']['status_name'] = $status[$info['ps_info']['status']];
                 if ($info['ps_info']['service']) {
                     foreach ($info['ps_info']['service'] as $k => $v) {
-                        $info['ps_info']['service'][$k]['service_name'] = '商家自送';
-                        if ($v['service_id'] > 0) {
-                            $service = Dever::db('shop/service')->find($v['service_id']);
-                            $info['ps_info']['service'][$k]['service_name'] = $service['name'];
+                        if (isset($v['order_num']) && $v['order_num']) {
+                            $info['ps_info']['service'][$k]['service_name'] = '商家自送';
+                            if ($v['service_id'] > 0) {
+                                $service = Dever::db('shop/service')->find($v['service_id']);
+                                $info['ps_info']['service'][$k]['service_name'] = $service['name'];
+                            }
+                        } else {
+                            unset($info['ps_info']['service'][$k]);
                         }
                     }
                 }
@@ -1438,17 +1442,19 @@ class Sell
             $service = array();
             if ($info['ps_info']['service']) {
                 foreach ($info['ps_info']['service'] as $k => $v) {
-                    $info['ps_info']['service'][$k]['service_name'] = '商家自送';
-                    if ($v['service_id'] > 0) {
-                        $service_info = Dever::db('shop/service')->find($v['service_id']);
-                        $info['ps_info']['service'][$k]['service_name'] = $service_info['name'];
-                    }
+                    if (isset($v['order_num']) && $v['order_num']) {
+                        $info['ps_info']['service'][$k]['service_name'] = '商家自送';
+                        if ($v['service_id'] > 0) {
+                            $service_info = Dever::db('shop/service')->find($v['service_id']);
+                            $info['ps_info']['service'][$k]['service_name'] = $service_info['name'];
+                        }
 
-                    $service[] = array
-                    (
-                        array('名称', $info['ps_info']['service'][$k]['service_name']),
-                        array('单号', isset($v['order_num']) ? $v['order_num'] : ''),
-                    );
+                        $service[] = array
+                        (
+                            array('名称', $info['ps_info']['service'][$k]['service_name']),
+                            array('单号', isset($v['order_num']) ? $v['order_num'] : ''),
+                        );
+                    }
                 }
             }
 

+ 2 - 2
app/shop/src/Yspay.php

@@ -13,7 +13,7 @@ class Yspay
 		$class = new Chinaums();
 
 		# 查看当前余额
-		$cash = $class->query('89810007372107A');
+		$cash = $class->query('89810007372107C');
 
 		echo $cash;die;
 		return $cash;
@@ -23,7 +23,7 @@ class Yspay
 	{
 		$order = Dever::order();
 
-		$result = $this->action('89810007372107A', $order, 2, 1);
+		$result = $this->action('89810007372107C', $order, 2, 127);
 
 		return $result;
 	}

+ 1 - 1
app/store/admin/Auth.php

@@ -338,7 +338,7 @@ class Auth
                     'order_1' => array
                     (
                         'name' => '平台商城订单发货',
-                        'link' => Dever::url('order?type=1&parent_type=2', 'store'),
+                        'link' => Dever::url('order?type=1&parent_type=2,3', 'store'),
                     ),
                     'order_2' => array
                     (

+ 38 - 1
app/store/admin/Excel.php

@@ -36,7 +36,7 @@ class Excel extends Core
         $parent_type = Dever::input('parent_type');
         $source_type = Dever::input('source_type');
 
-        if ($type == 1 && $parent_type == 2) {
+        if ($type == 1 && $parent_type != 1) {
             $file .= '-平台商城订单';
             $header_0 = array('客户订单编号', '收件人姓名', '收件人手机', '收件省份(直辖市)', '收件市(州)', '收件区(县,县级市)', '收件详细地址', '收件人备注', '订单备注', '相关单号', '订单来源');
 
@@ -76,6 +76,27 @@ class Excel extends Core
                             $v['type_info']['province_name'] = $v['type_info']['city_name'] = $v['type_info']['county_name'] = '';
                         }
                     }
+                } elseif ($v['parent_type'] == 3) {
+                    $parent_order = Dever::db('agent/dh_order')->find($v['parent_order_id']);
+
+                    if ($parent_order && $parent_order['mid']) {
+                        if ($parent_order['address_id']) {
+                            $address = Dever::load('agent/address')->getOne($parent_order['mid'], $parent_order['address_id']);
+                            $v['type_info']['name'] = $address['contact'];
+                            $v['type_info']['mobile'] = $address['mobile'];
+                            $v['type_info']['address'] = $address['address_info'];
+                            $v['type_info']['province_name'] = $address['province_name'];
+                            $v['type_info']['city_name'] = $address['city_name'];
+                            $v['type_info']['county_name'] = $address['county_name'];
+
+                        } else {
+                            $address = Dever::db('agent/member')->find($parent_order['mid']);
+                            $v['type_info']['name'] = $address['name'];
+                            $v['type_info']['mobile'] = $address['mobile'];
+                            $v['type_info']['address'] = '';
+                            $v['type_info']['province_name'] = $v['type_info']['city_name'] = $v['type_info']['county_name'] = '';
+                        }
+                    }
                 } else {
                     $info = Dever::db('area/province')->find($v['type_info']['province']);
                     $v['type_info']['province_name'] = $info['name'];
@@ -251,6 +272,22 @@ class Excel extends Core
                         $v['type_info']['address'] = '';
                     }
                 }
+            } elseif ($v['parent_type'] == 3) {
+                $parent_order = Dever::db('agent/dh_order')->find($v['parent_order_id']);
+
+                if ($parent_order && $parent_order['mid']) {
+                    if ($parent_order['address_id']) {
+                        $address = Dever::load('agent/address')->getOne($parent_order['uid'], $parent_order['address_id']);
+                        $v['type_info']['name'] = $address['contact'];
+                        $v['type_info']['mobile'] = $address['mobile'];
+                        $v['type_info']['address'] = $address['address_info'];
+                    } else {
+                        $address = Dever::db('agent/member')->find($parent_order['mid']);
+                        $v['type_info']['name'] = $address['name'];
+                        $v['type_info']['mobile'] = $address['mobile'];
+                        $v['type_info']['address'] = '';
+                    }
+                }
             }
 
             if (!isset($v['type_info']['sid'])) {

+ 16 - 0
app/store/admin/Factory_excel.php

@@ -144,6 +144,22 @@ class Factory_excel extends Core
                         $v['type_info']['address'] = '';
                     }
                 }
+            } elseif ($v['parent_type'] == 3) {
+                $parent_order = Dever::db('agent/dh_order')->find($v['parent_order_id']);
+
+                if ($parent_order && $parent_order['mid']) {
+                    if ($parent_order['address_id']) {
+                        $address = Dever::load('agent/address')->getOne($parent_order['mid'], $parent_order['address_id']);
+                        $v['type_info']['name'] = $address['contact'];
+                        $v['type_info']['mobile'] = $address['mobile'];
+                        $v['type_info']['address'] = $address['address_info'];
+                    } else {
+                        $address = Dever::db('agent/member')->find($parent_order['mid']);
+                        $v['type_info']['name'] = $address['name'];
+                        $v['type_info']['mobile'] = $address['mobile'];
+                        $v['type_info']['address'] = '';
+                    }
+                }
             }
 
             if (!isset($v['type_info']['sid'])) {

+ 45 - 9
app/store/admin/Order.php

@@ -80,16 +80,28 @@ class Order extends Core
                 $order = array();
                 if ($v['parent_type'] == 2) {
                     $order = Dever::db('shop/sell_order')->find($v['parent_order_id']);
-                }
 
-                if ($order && $order['uid']) {
-                    if ($order['address_id']) {
-                        $order['address'] = Dever::load('passport/address')->getOne($order['uid'], $order['address_id']);
+                    if ($order && $order['uid']) {
+                        if ($order['address_id']) {
+                            $order['address'] = Dever::load('passport/address')->getOne($order['uid'], $order['address_id']);
 
-                        $v['type_info']['name'] = $order['address']['contact'];
-                    } else {
-                        $user = Dever::db('passport/user')->find($order['uid']);
-                        $v['type_info']['name'] = $user['username'];
+                            $v['type_info']['name'] = $order['address']['contact'];
+                        } else {
+                            $user = Dever::db('passport/user')->find($order['uid']);
+                            $v['type_info']['name'] = $user['username'];
+                        }
+                    }
+                } elseif ($v['parent_type'] == 3) {
+                    $order = Dever::db('agent/dh_order')->find($v['parent_order_id']);
+                    if ($order && $order['mid']) {
+                        if ($order['address_id']) {
+                            $order['address'] = Dever::load('agent/address')->getOne($order['mid'], $order['address_id']);
+
+                            $v['type_info']['name'] = $order['address']['contact'];
+                        } else {
+                            $user = Dever::db('agent/member')->find($order['mid']);
+                            $v['type_info']['name'] = $user['name'];
+                        }
                     }
                 }
 
@@ -272,7 +284,31 @@ class Order extends Core
                         foreach ($ps_info as $k => $v) {
                             $v['service'] = Dever::array_decode($v['service']);
                             foreach ($v['service'] as $k1 => $v1) {
-                                Dever::load('shop/lib/sell')->updatePs($sell_order, 2, $v1['service_id'], $v1['order_num']);
+                                if (isset($v1['order_num']) && $v1['order_num']) {
+                                    Dever::load('shop/lib/sell')->updatePs($sell_order, 2, $v1['service_id'], $v1['order_num']);
+                                }
+                                
+                            }
+                        }
+                    }
+                } elseif ($order['parent_type'] == 3) {
+                    Dever::db('agent/dh_order')->update(array('where_id' => $order['parent_order_id'], 'status' => 4));
+
+                    $data = Dever::db('shop/buy_order')->getDataToId(array('parent_type' => $order['parent_type'], 'parent_order_id' => $order['parent_order_id']));
+
+                    $data = array_keys($data);
+                    
+
+                    $ps_info = Dever::db('shop/buy_order_ps')->getData(array('order_id' => $data));
+
+                    if ($ps_info) {
+                        $dh_order = array('id' => $order['parent_order_id']);
+                        foreach ($ps_info as $k => $v) {
+                            $v['service'] = Dever::array_decode($v['service']);
+                            foreach ($v['service'] as $k1 => $v1) {
+                                if (isset($v1['order_num']) && $v1['order_num']) {
+                                    Dever::load('agent/lib/dhorder')->updatePs($dh_order, 2, $v1['service_id'], $v1['order_num']);
+                                }
                             }
                         }
                     }

+ 1 - 0
main/database/help.php

@@ -7,6 +7,7 @@ $type = array
     3 => '仓库管理',
     4 => '工厂管理',
     5 => '网站',
+    6 => '代理商',
 );
 
 $config = array

+ 27 - 0
service/agent/assets/manage/html/dh_order_goods.html

@@ -0,0 +1,27 @@
+
+<form class="layui-form form10" action="" target="f10" method="post">
+<iframe id="f10" name="f10" style="display:none;"></iframe>
+<div class="layui-form-item" id="show">
+    <table class="layui-table">
+      <thead>
+        <tr>
+          <th>昵称</th>
+          <th>加入时间</th>
+          <th>签名</th>
+        </tr> 
+      </thead>
+      <tbody>
+        <tr>
+          <td>贤心</td>
+          <td>2016-11-29</td>
+          <td>人生就像是一场修行</td>
+        </tr>
+        <tr>
+          <td>许闲心</td>
+          <td>2016-11-28</td>
+          <td>于千万人之中遇见你所遇见的人,于千万年之中,时间的无涯的荒野里…</td>
+        </tr>
+      </tbody>
+    </table>
+</div>
+</form>

+ 541 - 0
service/agent/database/dh_order.php

@@ -0,0 +1,541 @@
+<?php
+
+$pay_status = Dever::config('base', 'pay')->pay['status'];
+
+$audit = array
+(
+    //1 => '待审核',
+    2 => '审核通过',
+    3 => '审核未通过',
+);
+
+$type = Dever::db('setting/role_goods')->config['set']['type'];
+
+$dh_type = array
+(
+	1 => '兑换',
+	2 => '自动发放',
+);
+
+$status = array
+(
+    1 => '待支付',
+    2 => '待审核',
+    3 => '已审核(未发货)',
+    4 => '已审核(已发货)',
+    5 => '已完成',
+    6 => '已完成(有退款)',
+    7 => '作废',
+    8 => '已退款',
+    11 => '已过期',
+);
+
+$refund_status = array
+(
+    1 => '未申请',
+    2 => '申请中',
+    3 => '有退款',
+    4 => '已退款',
+);
+
+return array
+(
+    # 表名
+    'name' => 'dh_order',
+    # 显示给用户看的名称
+    'lang' => '权益订单',
+    'order' => 80,
+    'status' => $status,
+    'end' => array
+    (
+        //'insert' => 'agent/lib/manage.sellOrderUpdate',
+        'update' => 'agent/lib/manage.sellOrderUpdate',
+    ),
+    # 数据结构
+    'struct' => array
+    (
+    
+        'id'        => array
+        (
+            'type'      => 'int-11',
+            'name'      => 'ID',
+            'default'   => '',
+            'desc'      => '',
+            'match'     => 'is_numeric',
+            'search'    => 'order',
+            //'list'      => true,
+        ), 
+
+        'shop_id'      => array
+        (
+            'type'      => 'int-11',
+            'name'      => '门店名称',
+            'default'   => '',
+            'desc'      => '门店名称',
+            'match'     => 'is_numeric',
+            'search'    => 'select',
+            'update'    => 'hidden',
+        ),
+
+        'mid'      => array
+        (
+            'type'      => 'int-11',
+            'name'      => '行权人',
+            'default'   => '-1',
+            'desc'      => '代理商',
+            'match'     => 'is_string',
+            'update'    => 'text',
+            'searchs'    => array
+            (
+                'api' => 'agent/member-select',
+                'col' => 'name',
+                'result' => 'id',
+            ),
+            'list'      => 'Dever::load("agent/member-find#name", {mid})',
+            'list_order' => 3,
+        ),
+
+        'mobile'        => array
+        (
+            'type'      => 'varchar-300',
+            'name'      => '手机号',
+            'default'   => '',
+            'desc'      => '手机号',
+            'match'     => 'option',
+            'search'    => 'fulltext',
+            'list'      => true,
+            'list_order' => 4,
+        ),
+
+        'address_id'      => array
+        (
+            'type'      => 'int-11',
+            'name'      => '送货地址',
+            'default'   => '',
+            'desc'      => '送货地址',
+            'match'     => 'is_numeric',
+        ),
+
+        'type'        => array
+        (
+            'type'      => 'tinyint-1',
+            'name'      => '类型',
+            'default'   => '1',
+            'desc'      => '类型',
+            'match'     => 'is_numeric',
+            'update'  	=> 'radio',
+            'option'    => $type,
+        ),
+
+        'dh_type'        => array
+        (
+            'type'      => 'tinyint-1',
+            'name'      => '行权方式',
+            'default'   => '1',
+            'desc'      => '行权方式',
+            'match'     => 'is_numeric',
+            'update'  	=> 'radio',
+            'option'    => $dh_type,
+            'list'		=> true,
+            'list_order' => 5,
+        ),
+
+        'name'      => array
+        (
+            'type'      => 'varchar-800',
+            'name'      => '详情',
+            'default'   => '',
+            'desc'      => '订单名称',
+            'match'     => 'is_string',
+            'update'    => 'text',
+            'list'		=> true,
+            'list_order' => 6,
+        ),
+
+        'order_num'      => array
+        (
+            'type'      => 'varchar-100',
+            'name'      => '订单号',
+            'default'   => '',
+            'desc'      => '订单号',
+            'match'     => 'is_string',
+            'update'    => 'text',
+            'search'    => 'fulltext',
+            'list'      => true,
+            'list_order' => 1,
+        ),
+
+        'price'      => array
+        (
+            'type'      => 'varchar-50',
+            'name'      => '订单总金额',
+            'default'   => '0',
+            'desc'      => '实付金额',
+            'match'     => 'option',
+            'update'    => 'text',
+            'list'      => false,
+            'list_order' => 11,
+        ),
+
+        'num'        => array
+        (
+            'type'      => 'int-11',
+            'name'      => '购买总数量',
+            'default'   => '',
+            'desc'      => '购买总数量',
+            'match'     => 'is_numeric',
+            'search'    => 'select',
+            'list'        => false,
+            'list_order'    => 10,
+        ),
+
+        'refund_num'        => array
+        (
+            'type'      => 'int-11',
+            'name'      => '退款数量',
+            'default'   => '0',
+            'desc'      => '退款数量',
+            'match'     => 'is_numeric',
+        ),
+
+        'refund_cash'      => array
+        (
+            'type'      => 'float-11',
+            'name'      => '退款金额',
+            'default'   => '0',
+            'desc'      => '已退订单金额',
+            'match'     => 'option',
+            'update'    => 'text',
+        ),
+
+        'refund_status'        => array
+        (
+            'type'      => 'tinyint-1',
+            'name'      => '退款状态',
+            'default'   => '1',
+            'desc'      => '申请退款状态',
+            'match'     => 'is_numeric',
+            'option'    => $refund_status,
+        ),
+
+        'info'      => array
+        (
+            'type'      => 'varchar-300',
+            'name'      => '订单备注',
+            'default'   => '',
+            'desc'      => '订单备注',
+            'match'     => 'option',
+            'update'    => 'textarea',
+        ),
+
+        'status'        => array
+        (
+            'type'      => 'tinyint-1',
+            'name'      => '订单状态',
+            'default'   => '1',
+            'desc'      => '订单状态',
+            'match'     => 'is_numeric',
+            'option'    => $status,
+            'search'    => 'select',
+            'list'      => true,
+            'list_order' => 7,
+        ),
+
+        'audit'        => array
+        (
+            'type'      => 'tinyint-1',
+            'name'      => '审核状态',
+            'default'   => '2',
+            'desc'      => '审核状态',
+            'match'     => 'is_numeric',
+            'option'    => $audit,
+            //'search'    => 'select',
+            'update'    => 'radio',
+        ),
+
+        'audit_desc'        => array
+        (
+            'type'      => 'varchar-500',
+            'name'      => '审核备注',
+            'default'   => '',
+            'desc'      => '审核备注',
+            'match'     => 'option',
+            'update'    => 'textarea',
+        ),
+
+        'fdate'     => array
+        (
+            'type'      => 'int-11',
+            'name'      => '完成时间',
+            'default'   => '',
+            'match'     => 'is_numeric',
+            'desc'      => '',
+        ),
+
+        'operdate'     => array
+        (
+            'type'      => 'int-11',
+            'name'      => '操作时间',
+            'default'   => '',
+            'match'     => 'is_numeric',
+            'desc'      => '',
+            //'list'      => '"{operdate}" > 0 ? date("Y-m-d H:i:s", {operdate}) : "-"',
+            //'list_name' => '发货时间',
+            //'list_order' => 8,
+        ),
+
+        'state'     => array
+        (
+            'type'      => 'tinyint-1',
+            'name'      => '状态',
+            'default'   => '1',
+            'desc'      => '请选择状态',
+            'match'     => 'is_numeric',
+        ),
+        
+        'cdate'     => array
+        (
+            'type'      => 'int-11',
+            'name'      => '行权时间',
+            'match'     => array('is_numeric', time()),
+            'desc'      => '',
+            # 只有insert时才生效
+            'insert'    => true,
+            'search'    => 'sdate',
+            'list'        => 'date("Y-m-d H:i", {cdate})',
+            //'list'      => 'Dever::load("service/lib/manage.showOrderTime", "{id}")',
+            'list_order' => 2,
+        ),
+    ),
+
+    'manage' => array
+    (
+        'delete' => false,
+        'edit' => false,
+        'insert' => false,
+
+        'button' => array
+        (
+            //'导出订单明细' => array('excel', 'shop/excel.sell_order'),
+        ),
+
+        'list_button' => array
+        (
+            //fast_list
+            'list' => array('查看详情', '"dh_order_goods&project=agent&order_id={id}&page_type=1"'),
+
+            'list1' => array('查看采购单', '"buy_order&project=shop&search_option_type=1&search_option_parent_type=3&search_option_parent_order_id={id}&oper_table=dh_order&oper_project=agent"', '{status} >= 3 && {audit} == 2'),
+
+            'fast' => array('审核', '"dh_order&where_id={id}&col=audit,audit_desc&oper_save_jump=dh_order&oper_table=dh_order&oper_parent=dh_order"', '{status} == 2'),
+
+            'oper'  => array('确认收货', '"agent/lib/manage.setDhOrderStatus?mid={mid}&order_id={id}"', '{status} == 4'),
+        ),
+    ),
+
+    'request' => array
+    (
+        'getList' => array
+        (
+            # 匹配的正则或函数 选填项
+            'option' => array
+            (
+                'mid' => 'yes',
+                'status' => 'yes',
+                'state' => 1,
+            ),
+            'type' => 'all',
+            'order' => array('cdate' => 'desc'),
+            'page' => array(5, 'list'),
+            'col' => '*',
+        ),
+
+        'getAll' => array
+        (
+            # 匹配的正则或函数 选填项
+            'option' => array
+            (
+                'name' => array('yes', 'like'),
+                'mid' => 'yes',
+                'mobile' => 'yes',
+                'start' => array('yes-cdate', '>='),
+                'end' => array('yes-cdate', '<='),
+                'status' => array('yes', 'in'),
+                'state' => 1,
+            ),
+            'type' => 'all',
+            'order' => array('cdate' => 'desc'),
+            'page' => array(10, 'list'),
+            'col' => '*',
+        ),
+
+        'getYes' => array
+        (
+            # 匹配的正则或函数 选填项
+            'option' => array
+            (
+                'mid' => 'yes',
+                'state' => 1,
+            ),
+            'type' => 'all',
+            'order' => array('cdate' => 'desc'),
+            'col' => '*',
+        ),
+
+        # 获取提交订单超过12个小时
+        'getDataByTime' => array
+        (
+            # 匹配的正则或函数 选填项
+            'option' => array
+            (
+                'cdate' => array('yes', '<='),
+                'status' => array('yes', 'in'),
+                'state' => 1,
+            ),
+            'type' => 'all',
+            'order' => array('cdate' => 'desc'),
+            'col' => '*',
+        ),
+
+        # 获取1,2
+        'getBuy' => array
+        (
+            # 匹配的正则或函数 选填项
+            'option' => array
+            (
+                'status' => 'yes',
+                'mid' => 'yes',
+                'order_num' => 'yes',
+                'uid' => 'yes',
+                'state' => 1,
+            ),
+            'type' => 'all',
+            'order' => array('id' => 'desc'),
+            'col' => '*',
+        ),
+
+        'getMyAll' => array
+        (
+            # 匹配的正则或函数 选填项
+            'option' => array
+            (
+                'uid' => 'yes',
+                'status' => 'yes',
+                'cate_id' => 'yes',
+                'state' => 1,
+            ),
+            'type' => 'all',
+            'order' => array('id' => 'desc'),
+            'page' => array(10, 'list'),
+            'col' => 'id,order_num,name,buy_num,cdate,cash,mid,buy_id',
+        ),
+
+        # 删除未支付订单
+        'drop' => array
+        (
+            # 匹配的正则或函数 选填项
+            'where' => array
+            (
+                'time' => array('yes-cdate', '<='),
+                'status' => 1,
+                'state' => 1,
+            ),
+            'type' => 'delete',
+            'col' => 'id,order_num',
+        ),
+
+        # 获取数据
+        'getAllByDate' => array
+        (
+            # 匹配的正则或函数 选填项
+            'where' => array
+            (
+                'start' => array('yes-cdate', '>='),
+                'end' => array('yes-cdate', '<='),
+                'status' => array('yes', 'in'),
+                'state' => 1,
+            ),
+            'type' => 'all',
+            'col' => 'id,order_num,mobile,mid,cdate,price-refund_cash as total,num-refund_num as num',
+        ),
+
+        # 获取订单数量
+        'getOrderNum' => array
+        (
+            # 匹配的正则或函数 选填项
+            'option' => array
+            (
+                'start' => array('yes-cdate', '>='),
+                'end' => array('yes-cdate', '<='),
+                'mid' => 'yes',
+                'status' => array('yes', 'in'),
+                'state' => 1,
+            ),
+            'type' => 'count',
+            'col' => '*',
+        ),
+
+        # 获取总金额
+        'getCashNum' => array
+        (
+            # 匹配的正则或函数 选填项
+            'option' => array
+            (
+                'start' => array('yes-cdate', '>='),
+                'end' => array('yes-cdate', '<='),
+                'mid' => 'yes',
+                'status' => array('yes', 'in'),
+                'state' => 1,
+            ),
+            'type' => 'one',
+            'col' => 'sum(price-refund_cash) as total',
+        ),
+
+        # 获取商品数量
+        'getGoodsNum' => array
+        (
+            # 匹配的正则或函数 选填项
+            'option' => array
+            (
+                'start' => array('yes-cdate', '>='),
+                'end' => array('yes-cdate', '<='),
+                'mid' => 'yes',
+                'status' => array('yes', 'in'),
+                'state' => 1,
+            ),
+            'type' => 'one',
+            'col' => 'sum(num-refund_num) as total',
+        ),
+
+        # 获取订单数量
+        'getUser' => array
+        (
+            # 匹配的正则或函数 选填项
+            'option' => array
+            (
+                'start' => array('yes-cdate', '>='),
+                'end' => array('yes-cdate', '<='),
+                'mid' => 'yes',
+                'status' => array('yes', 'in'),
+                'state' => 1,
+            ),
+            'type' => 'all',
+            'group' => 'mobile',
+            'col' => 'count(mobile) as total',
+        ),
+
+        'getUserNum' => array
+        (
+            # 匹配的正则或函数 选填项
+            'option' => array
+            (
+                'start' => array('yes-cdate', '>='),
+                'end' => array('yes-cdate', '<='),
+                'mid' => 'yes',
+                'status' => array('yes', 'in'),
+                'state' => 1,
+            ),
+            'type' => 'count',
+            'col' => '*',
+        ),
+    ),
+);

+ 227 - 0
service/agent/database/dh_order_goods.php

@@ -0,0 +1,227 @@
+<?php
+
+$status = array
+(
+    1 => '正常',
+    2 => '申请退款中',
+    3 => '已取消',
+);
+
+return array
+(
+    # 表名
+    'name' => 'dh_order_goods',
+    # 显示给用户看的名称
+    'lang' => '订单商品表',
+    'menu' => false,
+    'status' => $status,
+    # 数据结构
+    'struct' => array
+    (
+    
+        'id'        => array
+        (
+            'type'      => 'int-11',
+            'name'      => 'ID',
+            'default'   => '',
+            'desc'      => '',
+            'match'     => 'is_numeric',
+            'search'    => 'order',
+            'update'    => 'hidden',
+            //'list'        => true,
+        ),
+
+        'order_id'      => array
+        (
+            'type'      => 'int-11',
+            'name'      => '订单表id',
+            'default'   => '',
+            'desc'      => '订单表id',
+            'match'     => 'is_numeric',
+        ),
+
+        'shop_id'      => array
+        (
+            'type'      => 'int-11',
+            'name'      => '门店名称',
+            'default'   => '',
+            'desc'      => '门店名称',
+            'match'     => 'is_numeric',
+        ),
+
+        'shop_id'      => array
+        (
+            'type'      => 'int-11',
+            'name'      => '门店名称',
+            'default'   => '',
+            'desc'      => '门店名称',
+            'match'     => 'is_numeric',
+        ),
+
+        'goods_id'      => array
+        (
+            'type'      => 'int-11',
+            'name'      => '商品名称',
+            'default'   => '',
+            'desc'      => '商品名称',
+            'match'     => 'is_numeric',
+            'list'      => 'Dever::load("goods/info-find#name", {goods_id})',
+        ),
+
+        'sku_id'      => array
+        (
+            'type'      => 'int-11',
+            'name'      => 'sku_id',
+            'default'   => '-1',
+            'desc'      => 'sku_id',
+            'match'     => 'is_numeric',
+        ),
+
+        'price'      => array
+        (
+            'type'      => 'varchar-50',
+            'name'      => '单价',
+            'default'   => '',
+            'desc'      => '单价',
+            'match'     => 'option',
+            'update'    => 'text',
+            'list'        => true,
+        ),
+
+        'num'        => array
+        (
+            'type'      => 'int-11',
+            'name'      => '购买数量',
+            'default'   => '',
+            'desc'      => '购买数量',
+            'match'     => 'is_numeric',
+            'search'    => 'select',
+            'list'        => true,
+        ),
+
+        'status'        => array
+        (
+            'type'      => 'int-11',
+            'name'      => '状态',
+            'default'   => '1',
+            'desc'      => '状态',
+            'match'     => 'is_numeric',
+            //'update'  => 'select',
+            'option'    => $status,
+            'search'    => 'select',
+            'list'      => true,
+            'edit'      => true,
+        ),
+
+        'state'     => array
+        (
+            'type'      => 'tinyint-1',
+            'name'      => '状态',
+            'default'   => '1',
+            'desc'      => '请选择状态',
+            'match'     => 'is_numeric',
+        ),
+        
+        'cdate'     => array
+        (
+            'type'      => 'int-11',
+            'name'      => '创建时间',
+            'match'     => array('is_numeric', time()),
+            'desc'      => '',
+            # 只有insert时才生效
+            'insert'    => true,
+            'search'    => 'date',
+            'list'      => 'date("Y-m-d H:i:s", {cdate})',
+        ),
+    ),
+
+    'manage' => array
+    (
+        'insert' => false,
+        'delete' => false,
+        'page_list' => 'dh_order_goods',
+    ),
+
+    'request' => array
+    (
+        # 获取单条数据
+        'getIds' => array
+        (
+            # 匹配的正则或函数 选填项
+            'option' => array
+            (
+                'uid' => 'yes',
+                'shop_id' => 'yes',
+                'order_id' => 'yes',
+                'status' => 1,
+                'state' => 1,
+            ),
+            'type' => 'all',
+            'col' => '*|id',
+        ),
+
+        # 获取多条数据
+        'getDataByIds' => array
+        (
+            # 匹配的正则或函数 选填项
+            'option' => array
+            (
+                'ids' => array('yes-id', 'in'),
+                'uid' => 'yes',
+                'shop_id' => 'yes',
+                'order_id' => 'yes',
+                'state' => 1,
+            ),
+            'type' => 'all',
+            'col' => '*',
+        ),
+
+        # 获取多条数据
+        'getTotal' => array
+        (
+            # 匹配的正则或函数 选填项
+            'option' => array
+            (
+                'order_id' => 'yes',
+                'status' => array('yes', 'in'),
+                'state' => 1,
+            ),
+            'type' => 'count',
+            'col' => '*',
+        ),
+
+        # 获取订单数量
+        'getOrderNum' => array
+        (
+            # 匹配的正则或函数 选填项
+            'option' => array
+            (
+                'start' => array('yes-cdate', '>='),
+                'end' => array('yes-cdate', '<='),
+                'shop_id' => 'yes',
+                'goods_id' => 'yes',
+                'status' => 'yes',
+                'state' => 1,
+            ),
+            'type' => 'count',
+            'col' => '*',
+        ),
+
+        # 获取总金额
+        'getCashNum' => array
+        (
+            # 匹配的正则或函数 选填项
+            'option' => array
+            (
+                'start' => array('yes-cdate', '>='),
+                'end' => array('yes-cdate', '<='),
+                'shop_id' => 'yes',
+                'goods_id' => 'yes',
+                'status' => 'yes',
+                'state' => 1,
+            ),
+            'type' => 'one',
+            'col' => 'sum(price) as total',
+        ),
+    ),
+);

+ 153 - 0
service/agent/database/dh_order_ps.php

@@ -0,0 +1,153 @@
+<?php
+
+$status = array
+(
+    1 => '待处理',
+    2 => '配送中',
+    3 => '已配送',
+    4 => '未配送',
+);
+
+$service = function()
+{
+    $info = Dever::db('shop/service')->select(array('type' => 2));
+    return $info;
+};
+
+return array
+(
+    # 表名
+    'name' => 'sell_order_ps',
+    # 显示给用户看的名称
+    'lang' => '订单配送表',
+    'menu' => false,
+    'status' => $status,
+    'end' => array
+    (
+        'insert' => 'shop/lib/manage.sellOrderPs',
+        'update' => 'shop/lib/manage.sellOrderPs',
+    ),
+    # 数据结构
+    'struct' => array
+    (
+    
+        'id'        => array
+        (
+            'type'      => 'int-11',
+            'name'      => 'ID',
+            'default'   => '',
+            'desc'      => '',
+            'match'     => 'is_numeric',
+            'search'    => 'order',
+            'update'    => 'hidden',
+            //'list'        => true,
+        ),
+
+        'order_id'      => array
+        (
+            'type'      => 'int-11',
+            'name'      => '订单表id',
+            'default'   => '',
+            'desc'      => '订单表id',
+            'match'     => 'is_numeric',
+            'update'      => 'hidden',
+            'value'     => Dever::input('search_option_order_id'),
+        ),
+
+        'service'       => array
+        (
+            'type'      => 'text-1000',
+            'name'      => '快递信息',
+            'default'   => '',
+            'desc'      => '配送发货',
+            'match'     => 'is_string',
+            'update'    => array
+            (
+                array
+                (
+                    'col'       => 'service_id',
+                    'name'      => '配送服务商',
+                    'default'   => '-1',
+                    'desc'      => '配送服务商',
+                    'match'     => 'is_numeric',
+                    'update'    => 'select',
+                    'option'    => $service,
+                ),
+
+                array
+                (
+                    'col'       => 'order_num',
+                    'type'      => 'varchar-500',
+                    'name'      => '快递单号-填写一个单号即可',
+                    'default'   => '',
+                    'desc'      => '快递单号',
+                    'match'     => 'is_string',
+                    'update'    => 'text',
+                ),
+            ),
+        ),
+
+        'status'        => array
+        (
+            'type'      => 'int-11',
+            'name'      => '状态',
+            'default'   => '1',
+            'desc'      => '状态',
+            'match'     => 'is_numeric',
+            //'update'  => 'select',
+            'option'    => $status,
+            'search'    => 'select',
+            'list'      => true,
+            'edit'      => true,
+        ),
+
+        'qu_date'     => array
+        (
+            'type'      => 'int-11',
+            'name'      => '取件时间',
+            'default'   => '',
+            'match'     => 'is_numeric',
+            'desc'      => '取件时间',
+        ),
+
+        'qs_date'     => array
+        (
+            'type'      => 'int-11',
+            'name'      => '签收时间',
+            'default'   => '',
+            'match'     => 'is_numeric',
+            'desc'      => '签收时间',
+        ),
+
+        'state'     => array
+        (
+            'type'      => 'tinyint-1',
+            'name'      => '状态',
+            'default'   => '1',
+            'desc'      => '请选择状态',
+            'match'     => 'is_numeric',
+        ),
+        
+        'cdate'     => array
+        (
+            'type'      => 'int-11',
+            'name'      => '创建时间',
+            'match'     => array('is_numeric', time()),
+            'desc'      => '',
+            # 只有insert时才生效
+            'insert'    => true,
+            'search'    => 'date',
+            'list'      => 'date("Y-m-d H:i:s", {cdate})',
+        ),
+    ),
+
+    'manage' => array
+    (
+        
+    ),
+
+    'request' => array
+    (
+        
+    ),
+);

+ 179 - 0
service/agent/database/dh_order_refund.php

@@ -0,0 +1,179 @@
+<?php
+
+$type = array
+(
+    1 => '整个订单',
+    2 => '单一商品',
+);
+
+$status = array
+(
+    1 => '仅退款',
+    2 => '退货退款',
+);
+
+$process = array
+(
+    1 => '申请退款中',
+    2 => '审核通过',
+    3 => '审核驳回',
+);
+
+return array
+(
+    # 表名
+    'name' => 'dh_order_refund',
+    # 显示给用户看的名称
+    'lang' => '订单退款申请',
+    'menu' => false,
+    'status' => $status,
+    'process' => $process,
+    # 数据结构
+    'struct' => array
+    (
+    
+        'id'        => array
+        (
+            'type'      => 'int-11',
+            'name'      => 'ID',
+            'default'   => '',
+            'desc'      => '',
+            'match'     => 'is_numeric',
+            'search'    => 'order',
+            'update'    => 'hidden',
+            //'list'        => true,
+        ),
+
+        'order_id'      => array
+        (
+            'type'      => 'int-11',
+            'name'      => '订单表id',
+            'default'   => '',
+            'desc'      => '订单表id',
+            'match'     => 'is_numeric',
+        ),
+
+        'order_goods_id'      => array
+        (
+            'type'      => 'varchar-300',
+            'name'      => '订单商品表id',
+            'default'   => '',
+            'desc'      => '订单商品表id',
+            'match'     => 'option',
+        ),
+
+        'cash'      => array
+        (
+            'type'      => 'varchar-300',
+            'name'      => '退款金额',
+            'default'   => '',
+            'desc'      => '退款金额',
+            'match'     => 'option',
+            'update'    => 'text',
+        ),
+
+        'num'        => array
+        (
+            'type'      => 'int-11',
+            'name'      => '退款数量',
+            'default'   => '',
+            'desc'      => '退款数量',
+            'match'     => 'is_numeric',
+        ),
+
+        'desc'      => array
+        (
+            'type'      => 'varchar-300',
+            'name'      => '退款描述',
+            'default'   => '',
+            'desc'      => '退款描述',
+            'match'     => 'option',
+            'update'    => 'textarea',
+        ),
+
+        'pic'      => array
+        (
+            'type'      => 'varchar-8000',
+            'name'      => '退款图片',
+            'default'   => '',
+            'desc'      => '退款图片',
+            'match'     => 'option',
+            'update'    => 'images',
+            'key'       => '1',
+            'place'     => '660*660',
+        ),
+
+        'type'        => array
+        (
+            'type'      => 'int-11',
+            'name'      => '类型',
+            'default'   => '1',
+            'desc'      => '类型',
+            'match'     => 'is_numeric',
+            //'update'  => 'select',
+            'option'    => $type,
+            'search'    => 'select',
+            'list'      => true,
+            //'edit'      => true,
+        ),
+
+        'status'        => array
+        (
+            'type'      => 'int-11',
+            'name'      => '状态',
+            'default'   => '1',
+            'desc'      => '状态',
+            'match'     => 'is_numeric',
+            //'update'  => 'select',
+            'option'    => $status,
+            'search'    => 'select',
+            'list'      => true,
+            //'edit'      => true,
+        ),
+
+        'process'        => array
+        (
+            'type'      => 'int-11',
+            'name'      => '审核进度',
+            'default'   => '1',
+            'desc'      => '审核进度',
+            'match'     => 'is_numeric',
+            //'update'  => 'select',
+            'option'    => $process,
+            'search'    => 'select',
+            'list'      => true,
+            'edit'      => true,
+        ),
+
+        'state'     => array
+        (
+            'type'      => 'tinyint-1',
+            'name'      => '状态',
+            'default'   => '1',
+            'desc'      => '请选择状态',
+            'match'     => 'is_numeric',
+        ),
+        
+        'cdate'     => array
+        (
+            'type'      => 'int-11',
+            'name'      => '创建时间',
+            'match'     => array('is_numeric', time()),
+            'desc'      => '',
+            # 只有insert时才生效
+            'insert'    => true,
+            'search'    => 'date',
+            'list'      => 'date("Y-m-d H:i:s", {cdate})',
+        ),
+    ),
+
+    'manage' => array
+    (
+        
+    ),
+
+    'request' => array
+    (
+        
+    ),
+);

+ 36 - 7
service/agent/database/member.php

@@ -203,7 +203,7 @@ return array
             'desc'      => '所属门店',
             'match'     => 'is_numeric',
             'update'    => 'select',
-            'list'      => 'Dever::load("shop/info-one#name", {shop_id})',
+            'list'      => '{shop_id} > 0 ? Dever::load("shop/info-one#name", {shop_id}) : "无"',
         ),
 
         'type'        => array
@@ -297,31 +297,31 @@ return array
 
         'cash'      => array
         (
-            'type'      => 'varchar-500',
+            'type'      => 'float-11',
             'name'      => '余额',
             'default'   => '0',
             'desc'      => '余额',
-            'match'     => 'is_string',
+            'match'     => 'is_numeric',
             'update'    => 'text',
         ),
 
         'sell'      => array
         (
-            'type'      => 'varchar-500',
+            'type'      => 'float-11',
             'name'      => '销售业绩-直推业绩',
             'default'   => '0',
             'desc'      => '销售业绩',
-            'match'     => 'is_string',
+            'match'     => 'is_numeric',
             'update'    => 'text',
         ),
 
         'group_sell'      => array
         (
-            'type'      => 'varchar-500',
+            'type'      => 'float-11',
             'name'      => '团队销售业绩',
             'default'   => '0',
             'desc'      => '团队销售业绩',
-            'match'     => 'is_string',
+            'match'     => 'is_numeric',
             'update'    => 'text',
         ),
 
@@ -376,6 +376,35 @@ return array
 
     'request' => array
     (
+        'getInfo' => array
+        (
+            # 匹配的正则或函数 选填项
+            'option' => array
+            (
+                'status' => 2,
+                'state' => 1,
+            ),
+            'order' => array('id' => 'desc'),
+            'type' => 'one',
+            'col' => '*',
+        ),
+
+        'getData' => array
+        (
+            # 匹配的正则或函数 选填项
+            'option' => array
+            (
+                'idcard' => 'yes',
+                'id' => array('yes', '!='),
+                'status' => 2,
+                'state' => 1,
+            ),
+            'order' => array('id' => 'desc'),
+            'type' => 'all',
+            'page' => array(20, 'list'),
+            'col' => '*',
+        ),
+
         'upSell' => array
         (
             'type' => 'update',

+ 236 - 0
service/agent/database/member_address.php

@@ -0,0 +1,236 @@
+<?php
+
+$type = array
+(
+	1 => '普通地址',
+	2 => '默认地址',
+);
+
+$tag = array
+(
+    1 => '公司',
+    2 => '家',
+    3 => '学校',
+    //4 => '其他',
+);
+
+return array
+(
+    # 表名
+    'name' => 'member_address',
+    # 显示给用户看的名称
+    'lang' => '用户地址库',
+    'menu' => false,
+    # 数据结构
+    'struct' => array
+    (
+    
+        'id'        => array
+        (
+            'type'      => 'int-11',
+            'name'      => 'ID',
+            'default'   => '',
+            'desc'      => '',
+            'match'     => 'is_numeric',
+            'search'    => 'order',
+            'update'    => 'hidden',
+            //'list'        => true,
+        ),
+
+        'mid'      => array
+        (
+            'type'      => 'int-11',
+            'name'      => '代理商',
+            'default'   => '-1',
+            'desc'      => '代理商',
+            'match'     => 'is_string',
+            'update'    => 'text',
+            'searchs'    => array
+            (
+                'api' => 'agent/member-select',
+                'col' => 'name',
+                'result' => 'id',
+            ),
+            //'list'      => 'Dever::load("agent/member-find#name", {mid})',
+        ),
+
+		'type'		=> array
+		(
+			'type' 		=> 'tinyint-1',
+			'name' 		=> '类型',
+			'default' 	=> '2',
+			'desc' 		=> '类型',
+			'match' 	=> 'is_numeric',
+			'option' 	=> $type,
+			'update'	=> 'select',
+			//'list'		=> true,
+		),
+
+		'contact'		=> array
+		(
+			'type' 		=> 'varchar-100',
+			'name' 		=> '联系人',
+			'default' 	=> '',
+			'desc' 		=> '联系人',
+			'match' 	=> 'option',
+			'search'	=> 'fulltext',
+			//'update'	=> 'text',
+			//'list'		=> true,
+		),
+
+		'mobile'		=> array
+		(
+			'type' 		=> 'varchar-100',
+			'name' 		=> '联系电话',
+			'default' 	=> '',
+			'desc' 		=> '联系电话',
+			'match' 	=> 'option',
+			'search'	=> 'fulltext',
+			//'update'	=> 'text',
+			//'list'		=> true,
+		),
+
+        'country'		=> array
+		(
+			'type' 		=> 'varchar-100',
+			'name' 		=> '国家',
+			'default' 	=> '',
+			'desc' 		=> '国家',
+			'match' 	=> 'option',
+			//'update'	=> 'text',
+		),
+
+		'province'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '省份',
+			'default' 	=> '',
+			'desc' 		=> '省份',
+			'match' 	=> 'option',
+			//'update'	=> 'text',
+		),
+
+		'city'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '城市',
+			'default' 	=> '',
+			'desc' 		=> '城市',
+			'match' 	=> 'option',
+			//'update'	=> 'text',
+		),
+
+		'county'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '县区',
+			'default' 	=> '',
+			'desc' 		=> '县区',
+			'match' 	=> 'option',
+			//'update'	=> 'text',
+		),
+
+		'area'		=> array
+		(
+			'type' 		=> 'varchar-800',
+			'name' 		=> '地区',
+			'default' 	=> '',
+			'desc' 		=> '地区',
+			'match' 	=> 'is_string',
+			'search'	=> 'linkage',
+			'update'	=> 'linkage',
+			'option'	=> Dever::url('api.get', 'area'),
+			'list'		=> 'Dever::load("area/api.string", "{area}")',
+		),
+
+		'address'		=> array
+		(
+			'type' 		=> 'varchar-1000',
+			'name' 		=> '详细地址',
+			'default' 	=> '',
+			'desc' 		=> '详细地址',
+			'match' 	=> 'option',
+			//'update'	=> 'text',
+			//'list'		=> true,
+		),
+
+        'house_number'       => array
+        (
+            'type'      => 'varchar-500',
+            'name'      => '门牌号',
+            'default'   => '',
+            'desc'      => '门牌号',
+            'match'     => 'option',
+            //'update'  => 'text',
+            //'list'        => true,
+        ),
+
+        'tag'      => array
+        (
+            'type'      => 'tinyint-1',
+            'name'      => '标签',
+            'default'   => '1',
+            'desc'      => '标签',
+            'match'     => 'is_numeric',
+            'option'    => $tag,
+            'update'    => 'radio',
+            //'list'        => true,
+        ),
+
+        'state'     => array
+        (
+            'type'      => 'tinyint-1',
+            'name'      => '状态',
+            'default'   => '1',
+            'desc'      => '请选择状态',
+            'match'     => 'is_numeric',
+        ),
+        
+        'cdate'     => array
+        (
+            'type'      => 'int-11',
+            'name'      => '操作时间',
+            'match'     => array('is_numeric', time()),
+            'desc'      => '',
+            # 只有insert时才生效
+            //'insert'    => true,
+            'search'    => 'date',
+            'list'      => 'date("Y-m-d H:i:s", {cdate})',
+        ),
+    ),
+
+    'manage' => array
+    (
+        
+    ),
+
+    'request' => array
+    (
+		'getList' => array
+		(
+			# 匹配的正则或函数 选填项
+			'option' => array
+			(
+				'uid' => 'yes',
+				'state' => 1,
+			),
+			'type' => 'all',
+			'order' => array('type' => 'desc','id' => 'desc'),
+			'page' => array(10, 'list'),
+			'col' => '*',
+		),
+
+        'updateType' => array
+        (
+            'set' => array
+            (
+                'type' => 'yes',
+            ),
+            'where' => array
+            (
+                'type' => 'yes',
+            ),
+            'type' => 'update',
+        ),
+    ),
+);

+ 25 - 0
service/agent/database/member_area.php

@@ -76,6 +76,17 @@ return array
             'option'    => $type,
         ),
 
+        'price'      => array
+        (
+            'type'      => 'float-11',
+            'name'      => '实付金额',
+            'default'   => '0',
+            'desc'      => '金额',
+            'match'     => 'option',
+            'update'    => 'text',
+            'list'      => true,
+        ),
+
         'role'      => array
         (
             'type'      => 'int-11',
@@ -146,5 +157,19 @@ return array
             'order' => array('id' => 'desc'),
             'col' => '*',
         ),
+
+        'getOne' => array
+        (
+            # 匹配的正则或函数 选填项
+            'option' => array
+            (
+                'mid' => 'yes',
+                'type' => 'yes',
+                'state' => 1,
+            ),
+            'type' => 'all',
+            'order' => array('id' => 'desc'),
+            'col' => '*',
+        ),
     ),
 );

+ 2 - 1
service/agent/database/member_goods.php

@@ -124,11 +124,12 @@ return array
             'option' => array
             (
                 'mid' => 'yes',
+                'type' => 'yes',
                 'state' => 1,
             ),
             'order' => array('type' => 'asc', 'id' => 'desc'),
             'type' => 'all',
-            'col' => '*',
+            'col' => '*, total_num-sell_num as num',
         ),
     ),
 );

+ 70 - 5
service/agent/database/order.php

@@ -224,10 +224,20 @@ return array
             'update'    => 'text',
         ),
 
+        'f_price'      => array
+        (
+            'type'      => 'float-11',
+            'name'      => '原价',
+            'default'   => '0',
+            'desc'      => '原价',
+            'match'     => 'option',
+            'update'    => 'text',
+        ),
+
         'price'      => array
         (
-            'type'      => 'varchar-50',
-            'name'      => '金额',
+            'type'      => 'float-11',
+            'name'      => '实付金额',
             'default'   => '0',
             'desc'      => '金额',
             'match'     => 'option',
@@ -260,6 +270,16 @@ return array
 			'place'		=> '150',
 		),
 
+        'pay_price'      => array
+        (
+            'type'      => 'float-11',
+            'name'      => '交款金额',
+            'default'   => '0',
+            'desc'      => '交款金额',
+            'match'     => 'option',
+            'update'    => 'text',
+        ),
+
 		'bank_id'		=> array
 		(
 			'type' 		=> 'int-11',
@@ -334,6 +354,40 @@ return array
             'place'     => '660*660',
         ),
 
+        'company_name'      => array
+        (
+            'type'      => 'varchar-100',
+            'name'      => '公司名称',
+            'default'   => '',
+            'desc'      => '公司名称',
+            'match'     => 'is_string',
+            'update'    => 'text',
+            //'search'    => 'fulltext',
+            //'list'      => true,
+        ),
+
+        'company_pic'      => array
+        (
+            'type'      => 'varchar-150',
+            'name'      => '营业执照',
+            'default'   => '',
+            'desc'      => '营业执照',
+            'match'     => 'option',
+            'update'    => 'image',
+            'key'       => '8',
+            'place'     => '660*660',
+        ),
+
+        'company_number'      => array
+        (
+            'type'      => 'varchar-80',
+            'name'      => '营业执照号码',
+            'default'   => '',
+            'desc'      => '营业执照号码',
+            'match'     => 'is_string',
+            'update'    => 'text',
+        ),
+
         'status'        => array
         (
             'type'      => 'tinyint-1',
@@ -379,9 +433,9 @@ return array
             'option'    => $get_type,
         ),
 
-        'soft_cash'      => array
+        'agent_cash'      => array
         (
-            'type'      => 'varchar-50',
+            'type'      => 'float-11',
             'name'      => '代理费',
             'default'   => '0',
             'desc'      => '代理费',
@@ -389,6 +443,16 @@ return array
             'update'    => 'text',
         ),
 
+        'soft_cash'      => array
+        (
+            'type'      => 'float-11',
+            'name'      => '软件服务费',
+            'default'   => '0',
+            'desc'      => '软件服务费',
+            'match'     => 'option',
+            'update'    => 'text',
+        ),
+
         'state'     => array
         (
             'type'      => 'tinyint-1',
@@ -443,11 +507,12 @@ return array
             # 匹配的正则或函数 选填项
             'option' => array
             (
+                'mid' => 'yes',
                 'status' => array('yes', 'in'),
                 'state' => 1,
             ),
             'order' => array('id' => 'desc'),
-            'page' => array(20, 'list'),
+            'page' => array(10, 'list'),
             'type' => 'all',
             'col' => '*',
         ),

+ 12 - 1
service/agent/database/order_cash.php

@@ -69,9 +69,20 @@ return array
             'update'    => 'text',
         ),
 
+        'per'      => array
+        (
+            'type'      => 'float-11',
+            'name'      => '佣金比例-仅做展示用',
+            'default'   => '0',
+            'desc'      => '佣金比例',
+            'match'     => 'option',
+            'update'    => 'text',
+            'list'      => true,
+        ),
+
         'cash'      => array
         (
-            'type'      => 'varchar-150',
+            'type'      => 'float-11',
             'name'      => '金额',
             'default'   => '0',
             'desc'      => '金额',

+ 21 - 8
service/agent/database/order_process.php

@@ -23,10 +23,10 @@ $type = array
     5 => '代理合同已生成',
 );
 
-$get_type = array
+$cstatus = array
 (
-    1 => '购买区域',
-    2 => '赠送区域',
+    1 => '不拆分',
+    2 => '拆分',
 );
 
 $status_value = Dever::input('status', 1);
@@ -104,16 +104,27 @@ return array
             'control'   => 'status',
         ),
 
-        'get_type'        => array
+        'price'      => array
+        (
+            'type'      => 'float-11',
+            'name'      => '实付金额',
+            'default'   => '0',
+            'desc'      => '金额',
+            'match'     => 'option',
+            'update'    => 'text',
+            'value'     => Dever::input('price'),
+            'list'      => true,
+        ),
+
+        'cstatus'        => array
         (
             'type'      => 'tinyint-1',
-            'name'      => '是否赠送区域',
+            'name'      => '是否拆分代理费-选择拆分后,将代理费拆为代理费和软件服务费',
             'default'   => '1',
-            'desc'      => '是否赠送区域',
+            'desc'      => '是否拆分代理费',
             'match'     => 'is_numeric',
             'update'    => 'radio',
-            'option'    => $get_type,
-            'show'      => 'type=2',
+            'option'    => $cstatus,
         ),
 
         'desc'      => array
@@ -137,6 +148,8 @@ return array
             'desc'      => '权益发放情况',
             'match'     => 'option',
             'update'  	=> 'checkbox',
+            'checkall'  => 1,
+            'disabled'  => 1,
             'option'    => $type,
             'search'    => 'select',
             'show'		=> 'type=3',

+ 828 - 0
service/agent/lib/Dhorder.php

@@ -0,0 +1,828 @@
+<?php
+
+namespace Agent\Lib;
+
+use Dever;
+
+class Dhorder
+{
+    # 获取配置
+    public $config = array();
+    # table
+    public $table = 'agent/dh_order';
+
+    public function __construct()
+    {
+        $this->config = Dever::db($this->table)->config;
+    }
+
+    # 获取公共的where
+    public function where($id)
+    {
+        $where = array();
+        $where['mid'] = $id;
+        if (!$where) {
+            Dever::alert('参数错误');
+        }
+
+        return $where;
+    }
+
+    # 获取订单列表
+    public function getList($id)
+    {
+        $result = array();
+        $where = $this->where($id);
+        $mobile = Dever::input('mobile');
+        if ($mobile) {
+            $where['mobile'] = $mobile;
+        }
+        $status = Dever::input('status');
+        if ($status) {
+            $where['status'] = $status;
+        }
+
+        $result['order'] = Dever::db($this->table)->getAll($where);
+
+        if ($result['order']) {
+            foreach ($result['order'] as $k => $v) {
+                $result['order'][$k] = $this->getInfo($v, false);
+            }
+        }
+
+        return $result;
+    }
+
+    # 查看详情
+    public function getView($id, $order_id, $show = true)
+    {
+        $where = $this->where($id);
+        $where['id'] = $order_id;
+
+        $result = Dever::db($this->table)->find($where);
+
+        if (!$result) {
+            Dever::alert('订单不存在');
+        }
+
+        if ($show) {
+            $result = $this->getInfo($result);
+        }
+
+        return $result;
+    }
+
+    # 获取订单详细信息
+    public function getInfo($info, $view = true)
+    {
+        $info['status_name'] = $this->config['status'][$info['status']];
+
+        $info['cdate'] = date('Y-m-d H:i', $info['cdate']);
+
+        if ($info['operdate']) {
+            $info['operdate'] = date('Y-m-d H:i', $info['operdate']);
+        } else {
+            $info['operdate'] = '';
+        }
+
+        if ($info['fdate']) {
+            $info['fdate'] = date('Y-m-d H:i', $info['fdate']);
+        } else {
+            $info['fdate'] = '';
+        }
+
+
+        if ($view) {
+        	$info['ps_info'] = Dever::db('agent/dh_order_ps')->find(array('order_id' => $info['id']));
+	        if ($info['ps_info']) {
+	            $info['ps_info']['service'] = Dever::array_decode($info['ps_info']['service']);
+	            $info['ps_info']['cdate'] = date('Y-m-d H:i', $info['ps_info']['cdate']);
+	            if ($info['ps_info']['qu_date']) {
+	                $info['ps_info']['qu_date'] = date('Y-m-d H:i', $info['ps_info']['qu_date']);
+	            }
+	            if ($info['ps_info']['qs_date']) {
+	                $info['ps_info']['qs_date'] = date('Y-m-d H:i', $info['ps_info']['qs_date']);
+	            }
+
+	            $status = Dever::db('agent/dh_order_ps')->config['status'];
+	            $info['ps_info']['status_name'] = $status[$info['ps_info']['status']];
+	            if ($info['ps_info']['service']) {
+	                foreach ($info['ps_info']['service'] as $k => $v) {
+	                	if (isset($v['order_num']) && $v['order_num']) {
+	                		$info['ps_info']['service'][$k]['service_name'] = '商家自送';
+		                    if ($v['service_id'] > 0) {
+		                        $service = Dever::db('shop/service')->find($v['service_id']);
+		                        $info['ps_info']['service'][$k]['service_name'] = $service['name'];
+		                    }
+	                	} else {
+	                		unset($info['ps_info']['service'][$k]);
+	                	}
+	                }
+	            }
+	        }
+
+        	$goods_status = Dever::db('agent/dh_order_goods')->config['status'];
+	        if ($info['address_id']) {
+	            $info['address'] = Dever::db('agent/member_address')->find($info['address_id']);
+	        }
+
+	        $info['goods'] = Dever::db('agent/dh_order_goods')->select(array('order_id' => $info['id']));
+	        foreach ($info['goods'] as $k => $v) {
+	        	$goods_info = Dever::load('goods/lib/info')->getInfoBySku($v['goods_id'], $v['sku_id']);
+                if (isset($goods_info['sku'])) {
+                    $sku = $goods_info['sku']['string'];
+                } else {
+                    $sku = '';
+                }
+                $info['goods'][$k] += array
+                (
+                    'pic' => $goods_info['cover'],
+                    'name' => $goods_info['name'],
+                    'sku' => $sku,
+                    'price' => $goods_info['price'],
+                );
+	        }
+        }
+
+        return $info;
+    }
+
+    # 取消订单
+    public function cancel($id, $order_id)
+    {
+        $data = $this->getView($id, $order_id, false);
+        if ($data['status'] == 1) {
+            $state = Dever::db('agent/dh_order')->update(array('where_id' => $data['id'], 'status' => 7, 'operdate' => time()));
+            if ($state) {
+                $this->updateSell($data, 2);
+            }
+
+            return 'ok';
+        } else {
+            Dever::alert('当前订单状态不允许取消');
+        }
+    }
+
+    # 得到商品和总价
+    public function goods($mid)
+    {
+        $goods_id = Dever::input('goods_id');
+        if (!$goods_id) {
+            Dever::alert('请传入商品');
+        }
+        $goods_id = explode(',', $goods_id);
+        
+        $num = Dever::input('num');
+        if (!$num) {
+            Dever::alert('请传入商品数量');
+        }
+        $num = explode(',', $num);
+
+        $data['price'] = 0;
+        $data['num'] = 0;
+        $data['name'] = array();
+        $count = count($goods_id);
+        $data['list'] = array();
+        $i = 0;
+        foreach ($goods_id as $k => $v) {
+            $n = isset($num[$k]) ? $num[$k] : 1;
+
+            $data['list'][$i] = Dever::db('agent/member_goods')->find(array('mid' => $mid, 'id' => $v));
+
+            if ($data['list'][$i]) {
+            	$data['list'][$i]['num'] = $n;
+
+	            # 2是库存不足
+	            $data['list'][$i]['ku_state'] = 1;
+
+            	$total = $data['list'][$i]['total_num'] - $data['list'][$i]['sell_num'];
+            	if ($total >= $n) {
+            		$data['list'][$i]['buy_num'] = $n;
+            	} else {
+            		$data['list'][$i]['buy_num'] = $total;
+            	}
+
+            	if ($data['list'][$i]['buy_num'] <= 0) {
+	                $data['list'][$i]['ku_state'] = 2;
+	                $data['list'][$i]['buy_num'] = 0;
+	            }
+
+            	$goods_info = Dever::load('goods/lib/info')->getInfoBySku($data['list'][$i]['type_id'], $data['list'][$i]['sku_id']);
+                if (isset($goods_info['sku'])) {
+                    $sku = $goods_info['sku']['string'];
+                } else {
+                    $sku = '';
+                }
+                $data['list'][$i] += array
+                (
+                    'pic' => $goods_info['cover'],
+                    'name' => $goods_info['name'],
+                    'sku' => $sku,
+                    'price' => $goods_info['price'],
+                );
+
+                if ($data['list'][$i]['ku_state'] == 1) {
+	                $data['num'] += $data['list'][$i]['buy_num'];
+	                $data['price'] += $goods_info['price'] * $data['list'][$i]['buy_num'];
+	                $data['name'] = '兑换商品';
+	            }
+
+                $i++;
+            }
+        }
+        return $data;
+    }
+
+    # 确认兑换
+	public function action($user, $name, $num, $price, $goods, $address_id, $dh_type, $type, $info, $refer = '')
+    {
+    	# 获取平台店
+    	$shop = Dever::db('shop/info')->find(array('type' => 10));
+    	if (!$shop) {
+    		Dever::alert('没有平台店');
+    	}
+        $order_data['shop_id'] = $shop['id'];
+        $order_data['mid'] = $user['id'];
+        $order_data['mobile'] = $user['mobile'];
+        $order_data['address_id'] = $address_id;
+        $order_data['name'] = $name;
+        $order_data['num'] = $num;
+        $order_data['info'] = $info;
+        $order_data['price'] = $price;
+        $order_data['dh_type'] = $dh_type;
+        $order_data['type'] = $type;
+        $order_data['status'] = 2;
+        $order_data['refund_cash'] = 0;
+        $order_data['audit'] = 2;
+
+        $order_data['order_num'] = $this->getOrderId();
+        $id = Dever::db('agent/dh_order')->insert($order_data);
+
+        if (!$id) {
+            Dever::alert('兑换失败');
+        }
+
+        foreach($goods as $k => $v) {
+            if ($v['ku_state'] == 1) {
+                $data['mid'] = $user['id'];
+                $data['order_id'] = $id;
+                $data['shop_id'] = $shop['id'];
+                $data['goods_id'] = $v['type_id'];
+                $data['sku_id'] = $v['sku_id'];
+                $data['price'] = $v['price'];
+                $data['num'] = $v['buy_num'];
+
+                Dever::db('agent/dh_order_goods')->insert($data);
+            }
+        }
+
+        # 减少库存 增加销量
+        $order_data['id'] = $id;
+        $this->updateSell($order_data);
+    	return array
+        (
+            'order_num' => $order_data['order_num'],
+            'order_id' => $id,
+            'type' => 'dh',
+        );
+    }
+
+    # 添加配送信息
+    public function updatePs($order, $status = 1, $service_id = -1, $order_num = '')
+    {
+        $where['order_id'] = $order['id'];
+        $where['clear'] = true;
+        $data = Dever::db('agent/dh_order_ps')->find($where);
+
+        $service = array();
+        if ($service_id) {
+            $service['service_id'] = $service_id;
+        }
+        if ($order_num) {
+            $service['order_num'] = $order_num;
+        }
+        if (!$data) {
+            $insert = $where;
+            if ($service) {
+                $insert['service'][] = $service;
+                $insert['service'] = Dever::array_encode($insert['service']);
+            }
+            $insert['status'] = $status;
+            if ($status == 2) {
+                $insert['qu_date'] = time();
+            }
+        
+            Dever::db('agent/dh_order_ps')->insert($insert);
+        } else {
+            $update = $where;
+            $update['where_id'] = $data['id'];
+            $update['status'] = $status;
+            if ($status == 2) {
+                $update['qu_date'] = time();
+            }
+            if ($status == 3) {
+                $update['qs_date'] = time();
+            }
+            if ($service) {
+                $data['service'] = Dever::array_decode($data['service']);
+                $update['service'] = $data['service'];
+                $update['service'][] = $service;
+
+                $insert['service'] = Dever::array_encode($update['service']);
+            }
+            Dever::db('agent/dh_order_ps')->update($update);
+        }
+    }
+
+    # 减少库存,增加销量
+    public function updateSell($order, $type = 1)
+    {
+        $where['order_id'] = $order['id'];
+        $where['status'] = 1;
+        $data = Dever::db('agent/dh_order_goods')->select($where);
+        if ($data) {
+            Dever::load('shop/lib/goods')->oper($order, $type, 2, $data);
+        }
+    }
+
+    # 完成
+    public function finish($info, $shop_id)
+    {
+        if ($info && $info['shop_id'] == $shop_id && $info['status'] <= 4) {
+
+            $status = 5;
+            $state = Dever::db('agent/dh_order')->update(array('where_id' => $info['id'], 'status' => $status, 'fdate' => time()));
+
+            $this->updatePs($info, 3);
+
+            $w['parent_type'] = 3;
+            $w['parent_order_id'] = $info['id'];
+            $w['status'] = 4;
+            $buy_order = Dever::db('shop/buy_order')->select($w);
+            if ($buy_order) {
+                foreach ($buy_order as $k => $v) {
+                    Dever::load('mshop/lib/buy')->set(1,1)->finish($shop_id, $v['id']);
+                }
+            }
+            return 'ok';
+        } else {
+            Dever::alert('您没有权限核销');
+        }
+    }
+
+    # 平台订单已收货
+    public function yes_api()
+    {
+        $shop_id = Dever::input('shop_id');
+        $order_id = Dever::input('order_id');
+
+        $info = Dever::db('agent/dh_order')->find(array('id' => $order_id));
+
+        if ($info && $info['type'] == 10) {
+            $this->finish($info, $shop_id);
+        } else {
+            Dever::alert('您没有权限核销');
+        }
+
+        return 'reload';
+    }
+
+    # 生成订单号
+    public function getOrderId()
+    {
+        $where['order_num'] = Dever::order('DH');
+        $state = Dever::db('agent/dh_order')->one($where);
+        if (!$state) {
+            return $where['order_num'];
+        } else {
+            return $this->getOrderId();
+        }
+    }
+
+    # 展示订单详情
+    public function show()
+    {
+        $id = Dever::input('order_id');
+
+        $config = Dever::db('agent/dh_order')->config;
+
+        $info = Dever::db('agent/dh_order')->one($id);
+
+        $tk_status = Dever::db('agent/dh_order_refund')->config['status'];
+        $tk_process = Dever::db('agent/dh_order_refund')->config['process'];
+
+        $status = $config['status'][$info['status']];
+
+        $tk = Dever::db('agent/dh_order_refund')->find(array('order_id' => $info['id'], 'type' => 1));
+
+        $shop = Dever::db('shop/info')->find($info['shop_id']);
+
+        $user = Dever::db('agent/member')->find($info['mid']);
+
+        $cdate = date('Y-m-d H:i', $info['cdate']);
+        if ($info['operdate']) {
+            $opertime = date('Y-m-d H:i', $info['operdate']);
+        } else {
+            $opertime = '';
+        }
+
+        if ($info['fdate']) {
+            $fdate = date('Y-m-d H:i', $info['fdate']);
+        } else {
+            $fdate = '';
+        }
+
+        if (!$user) {
+            $user['username'] = '无';
+        }
+        if (!isset($user['name'])) {
+            $user['truename'] = $user['name'];
+        }
+
+        if ($tk && $tk['process'] == 1) {
+            $status = '申请' . $tk_status[$tk['status']];
+            $process = $tk_process[$tk['process']];
+            $process = '';
+        }
+
+        $time = array();
+        $time[] = array('下单时间', $cdate);
+
+        if ($opertime) {
+            if ($info['status'] == 2) {
+                $time[] = array('通知时间', $opertime);
+            }
+            if ($info['status'] == 7) {
+                $time[] = array('取消时间', $opertime);
+            }
+        }
+
+        if ($fdate) {
+            $time[] = array('完成时间', $fdate);
+        }
+
+        $time[] = array('审核备注', $info['audit_desc']);
+
+        $result = array();
+
+        $result[$info['order_num']] = array
+        (
+            'type' => 'info',
+            'content' => array
+            (
+                array
+                (
+                    array('订单状态', $status),
+                    array('代理商姓名', $user['name']),
+                    array('联系电话', $info['mobile']),
+                ),
+
+                $time,
+            )
+        );
+
+        if ($info['address_id'] > 0) {
+            $address = Dever::load('agent/address')->getOne($info['mid'], $info['address_id']);
+
+            if ($address) {
+
+                $result['收货地址'] = array
+                (
+                    'type' => 'info',
+                    'content' => array
+                    (
+                        array
+                        (
+                            array('联系人', $address['contact']),
+                            array('联系电话', $address['mobile']),
+                        ),
+
+                        array
+                        (
+                            array('收货地址', $address['address_info']),
+                            array('门牌号', $address['house_number']),
+                        ),
+                    ),
+                );
+            }
+        }
+
+        $info['ps_info'] = Dever::db('agent/dh_order_ps')->find(array('order_id' => $info['id']));
+        if ($info['ps_info']) {
+            $info['ps_info']['service'] = Dever::array_decode($info['ps_info']['service']);
+            $info['ps_info']['cdate'] = date('Y-m-d H:i', $info['ps_info']['cdate']);
+            if ($info['ps_info']['qs_date']) {
+                $info['ps_info']['qs_date'] = date('Y-m-d H:i', $info['ps_info']['qs_date']);
+            } else {
+                $info['ps_info']['qs_date'] = '无';
+            }
+
+            $status = Dever::db('agent/dh_order_ps')->config['status'];
+            $info['ps_info']['status_name'] = $status[$info['ps_info']['status']];
+            
+            $service = array();
+            if ($info['ps_info']['service']) {
+                foreach ($info['ps_info']['service'] as $k => $v) {
+                	if (isset($v['order_num']) && $v['order_num']) {
+                		$info['ps_info']['service'][$k]['service_name'] = '商家自送';
+	                    if ($v['service_id'] > 0) {
+	                        $service_info = Dever::db('shop/service')->find($v['service_id']);
+	                        $info['ps_info']['service'][$k]['service_name'] = $service_info['name'];
+	                    }
+
+	                    $service[] = array
+	                    (
+	                        array('名称', $info['ps_info']['service'][$k]['service_name']),
+	                        array('单号', isset($v['order_num']) ? $v['order_num'] : ''),
+	                    );
+                	}
+                }
+            }
+
+            $result['物流信息'] = array
+            (
+                'type' => 'info',
+                'content' => array
+                (
+                    array
+                    (
+                        array('发货时间', $info['ps_info']['cdate']),
+                        array('收货时间', $info['ps_info']['qs_date']),
+                        array('查单', '<a href="https://www.kuaidi100.com/?from=openv" target="_blank">点此手动查单</a>'),
+                    ),
+                ),
+            );
+            $result['物流信息']['content'] = array_merge($result['物流信息']['content'], $service);
+        }
+
+
+        if (!$info['refund_cash']) {
+            $info['refund_cash'] = 0;
+        }
+
+        if ($info['refund_cash'] > 0 && $tk) {
+            $process = $tk_process[$tk['process']];
+            $tk['cdate'] = date('Y-m-d H:i', $tk['cdate']);
+            $result['退款信息'] = array
+            (
+                'type' => 'info',
+                'content' => array
+                (
+                    array
+                    (
+                        array('退款金额', $info['refund_cash']),
+                        array('数量', $info['num']),
+                        array('退款进度', $process),
+                    ),
+
+                    array
+                    (
+                        array('申请时间', $tk['cdate']),
+                        array('退款原因', $tk['desc']),
+                    ),
+                ),
+            );
+        }
+
+        $body = $refund_body = array();
+        $body_total = array();
+        $body_total['price'] = 0;
+        $body_total['num'] = 0;
+
+        $refund_body_total = array();
+        $refund_body_total['price'] = 0;
+        $refund_body_total['num'] = 0;
+
+        $goods = Dever::db('agent/dh_order_goods')->select(array('order_id' => $info['id']));
+        $goods_status = Dever::db('agent/dh_order_goods')->config['status'];
+
+        foreach ($goods as $k => $v) {
+            $goods_info = Dever::load('goods/lib/info')->getInfoBySku($v['goods_id'], $v['sku_id']);
+            $status = $goods_status[$v['status']];
+            $tk = Dever::db('agent/dh_order_refund')->find(array('order_id' => $info['id'], 'order_goods_id' => $v['id'], 'type' => 2));
+            if ($tk && $tk['process'] == 1) {
+                $status = '申请' . $tk_status[$tk['status']];
+                //$status .= '&nbsp;&nbsp;[' . $tk_process[$tk['process']] . ']';
+            }
+            if (isset($goods_info['sku'])) {
+                $sku = $goods_info['sku']['string'];
+            } else {
+                $sku = '无';
+            }
+
+            if ($info['status'] > 1 && $info['status'] < 7) {
+                $tui = Dever::url('buy_order_tui?shop_id='.$v['shop_id'].'&order_goods_id=' . $v['id'] . '&order_id=' . $info['id'] . '&cash=' . $v['price'], 'shop');
+
+                $status = '<a href="javascript:;" onclick="fastEdit($(this), \''.$tui.'\', \'退款\', \'\', 1)" class="layui-btn">退款</a>';
+            }
+
+            $d = array
+            (
+                'pic' => $goods_info['cover'],
+                'name' => $goods_info['name'],
+                'sku' => $sku,
+                'price' => $v['price'],
+                'num' => $v['num'],
+                'status' => $status,
+            );
+
+            if ($tk && $v['status'] == 3) {
+                $d['status'] = $tk_status[$tk['status']];
+                $refund_body[] = $d;
+                $price = $v['price']*$v['num'];
+                $refund_body_total['price'] += $price;
+                $refund_body_total['num'] += $v['num'];
+            } else {
+                $body[] = $d;
+                $price = $v['price']*$v['num'];
+                $body_total['price'] += $price;
+                $body_total['num'] += $v['num'];
+            }
+        }
+
+        if ($body) {
+            if ($refund_body_total['price']) {
+                $body_total['set_price'] = $body_total['price'] - $refund_body_total['price'];
+            }
+            if ($refund_body_total['num']) {
+                $body_total['set_num'] = $body_total['num'] - $refund_body_total['num'];
+            }
+
+            $result['商品清单'] = array
+            (
+                'type' => 'list',
+                'content' => $body,
+                'total' => $body_total,
+            );
+        }
+
+        if ($refund_body) {
+            $result['退款商品'] = array
+            (
+                'type' => 'list',
+                'content' => $refund_body,
+                'total' => $refund_body_total,
+            );
+        }
+
+        # 平台门店采购单
+        $buy_order = Dever::db('shop/buy_order')->getDataToId(array('type' => 1, 'type_id' => $info['shop_id'], 'parent_type' => 3, 'parent_order_id' => $info['id']));
+        $source_order_id = array();
+        if ($buy_order) {
+            $source_order_id = array_keys($buy_order);
+        }
+
+        # 平台门店结算单
+        if ($source_order_id) {
+            $cash_order = Dever::db('cash/order')->getDataByOrderId(array('source_order_id' => $source_order_id));
+
+            $col = 'cash';
+        }
+
+        if (isset($cash_order) && $cash_order) {
+            $head = array('序号', '结算单号', '数量', '金额', '结算类型', '入账状态', '审核状态', '结算时间', '审核备注', '管理');
+
+            $body = array();
+            $config = Dever::db('cash/order')->config;
+            foreach ($cash_order as $k => $v) {
+                $cdate = date('Y-m-d H:i', $v['cdate']);
+                $fdate = $v['fdate'] ? date('Y-m-d H:i', $v['fdate']) : '';
+                $operdate = $v['operdate'] ? date('Y-m-d H:i', $v['operdate']) : '';
+                $cash = $v[$col];
+
+                $url = Dever::url('project/database/list?project=shop&table=buy_order_goods&order_id='.$v['source_order_id'].'&page_type=1', 'manage');
+                $v['source_order_num'] = '<a href="'.$url.'" style="color:blue">'.$v['source_order_num'].'</a>';
+
+                $m = '';
+                if ($v['audit'] == 1 && $v['audit_type'] == 2) {
+                    $url = Dever::url('project/database/update?project=cash&table=order&where_id='.$v['id'].'&col=audit,desc', 'manage');
+                    $m = '<a href="javascript:;" onclick="fastEdit($(this), \''.$url.'\', \'审核\', \'\', 1)" class="layui-btn">审核</a>';
+                }
+
+                $d = array
+                (
+                    $k+1,
+                    $v['order_num'],
+                    $v['num'],
+                    $cash,
+                    $config['config_jstype'][$v['jstype']],
+                    $config['config_status'][$v['status']],
+                    $config['config_audit'][$v['audit']],
+                    $operdate,
+                    $v['desc'],
+                    $m,
+                );
+
+                $body[] = $d;
+            }
+
+            $result['对账清单'] = array
+            (
+                'type' => 'table',
+                'content' => array
+                (
+                    'head' => $head,
+                    'body' => $body,
+                )
+            );
+                
+        }
+        
+
+        $head = array
+        (
+            'name' => '基本信息',
+            'btn' => array(),
+        );
+        $html = Dever::show($head, $result);
+
+        return $html;
+    }
+
+    # 第三方确认
+    public function tixian()
+    {
+        $param = array();
+
+        ksort($param);
+        $string = array();
+        foreach ($param as $k => $v) {
+            if (strstr($v, '&') || strstr($v, '@')) {
+                $v = urlencode($v);
+            }
+            $string[] = $k . '=' . $v;
+        }
+    }
+    
+    # 发货
+    public function notice($info)
+    {
+        $config = Dever::db('agent/dh_order')->config;
+        $state = Dever::db('agent/dh_order')->update(array('where_id' => $info['id'], 'status' => 3, 'operdate' => time()));
+    }
+
+    # 采购订单审核 拆单
+    public function audit_commit()
+    {
+        $order_id = Dever::input('order_id');
+        $order = Dever::db('agent/dh_order')->find($order_id);
+
+        if (!$order || ($order && $order['status'] != 2)) {
+            Dever::alert('当前订单状态无法拆单');
+        }
+
+        $order['type'] = 3;
+
+        $goods = Dever::db('agent/dh_order_goods')->select(array('order_id' => $order_id));
+
+        $shop = Dever::db('shop/info')->find($order['shop_id']);
+
+        $data = Dever::load('mshop/lib/buy')->assign($goods, $order, $shop);
+
+        $send = array();
+
+        if (!$goods && $data) {
+            # 开始生成订单
+            $i = $order['order_index'];
+            foreach ($data as $k => $v) {
+                foreach ($v as $k1 => $v1) {
+                    $v1['order_num'] .= '_' . $i;
+
+                    $state = Dever::load('mshop/lib/buy')->createOrder($v1);
+                    $send[$state] = $v1;
+                }
+                $i++;
+            }
+
+            Dever::db('agent/dh_order')->update(array('where_id' => $order['id'], 'status' => 3));
+        } else {
+            Dever::db('agent/dh_order')->update(array('where_id' => $order['id'], 'audit' => 1));
+            if ($goods) {
+                $string = array();
+                foreach ($goods as $k => $v) {
+                    $info = Dever::load('goods/lib/info')->getInfoBySku($v['goods_id'], $v['sku_id']);
+                    
+                    if ($info['sku_name']) {
+                        $info['name'] .= '('.$info['sku_name'].')';
+                    }
+                    $string[] = $info['name'];
+                }
+                $string = implode('、', $string);
+                Dever::alert('商品:'.$string.'库存不足或厂家未生产,请联系供货商备货,该订单进入重新审核状态');
+            } else {
+                Dever::alert('供货商库存不足,请联系供货商备货,该订单进入重新审核状态');
+            }
+        }
+
+        if ($send) {
+            foreach ($send as $k => $v) {
+                Dever::load('mshop/lib/buy')->sendMsg($v['source_type'], $v['source_id'], $k);
+
+                $order_info = Dever::db('shop/buy_order')->find(array('id' => $k, 'clear' => true));
+                Dever::load('cash/lib/order')->up($order_info, 1, 1);
+            }
+        }
+
+        return 'ok';
+    }
+}

+ 82 - 11
service/agent/lib/Manage.php

@@ -17,11 +17,35 @@ class Manage
                 if ($audit == 1) {
                     $update = array('where_id' => $order_id, 'status' => $status+1);
                     if ($status == 2) {
-                        $get_type = Dever::param('get_type', $data);
-                        $update['get_type'] = $get_type;
+                        $order = Dever::db('agent/order')->find($order_id);
+
+                        $price = Dever::param('price', $data);
+                        if ($price <= 0) {
+                            $update['get_type'] = 2;
+                        } else {
+                            $update['get_type'] = 1;
+                        }
+                        $update['price'] = $price;
+                        $update['agent_cash'] = $price;
+                        $update['soft_cash'] = 0;
+
+                        $cstatus = Dever::param('cstatus', $data);
+                        if ($cstatus && $cstatus == 2 && $price > 0) {
+                            # 拆分代理费
+                            $role = Dever::db('setting/role')->one($order['role']);
+                            if ($role && $role['soft']) {
+                                if (strstr($role['soft'], '%')) {
+                                    $role['soft'] = str_replace('%', '', $role['soft']);
+                                    $role['soft'] = $price * ($role['soft']/100);
+                                }
+
+                                $update['agent_cash'] = $price - $role['soft'];
+                                $update['soft_cash'] = $role['soft'];
+                            }
+                        }
+                        
                         $update['pay_status'] = 2;
                         # 财务终审之后,先生成代理商
-                        $order = Dever::db('agent/order')->find($order_id);
                         if ($order['mid'] <= 0) {
                             # 生成
                             $where['mobile'] = $order['mobile'];
@@ -34,9 +58,14 @@ class Manage
                                 $data['idcard'] = $order['idcard'];
                                 $data['idcard_front'] = $order['idcard_front'];
                                 $data['idcard_back'] = $order['idcard_back'];
+                                $data['company_name'] = $order['company_name'];
+                                $data['company_pic'] = $order['company_pic'];
+                                $data['company_number'] = $order['company_number'];
                                 $data['role'] = 1;
                                 $data['parent_mid'] = $order['parent_mid'];
                                 $update['mid'] = Dever::db('agent/member')->insert($data);
+
+                                Dever::load('invite/api')->setRelation($update['mid'], $data['parent_mid']);
                             }
                         }
                     }
@@ -60,16 +89,22 @@ class Manage
                 $order = Dever::db('agent/order')->find($order_id);
                 if ($order && $order['mid']) {
                     $member = Dever::db('agent/member')->find($order['mid']);
+                    $update['where_id'] = $order['mid'];
                     if ($member && $member['status'] == 1) {
-                        Dever::db('agent/member')->update(array('where_id' => $order['mid'], 'status' => 2));
+                        $update['status'] = 2;
                     }
+                    $update['area'] = $order['area'];
+                    $update['role'] = $order['role'];
+
+                    Dever::db('agent/member')->update($update);
 
                     $area_data = array('mid' => $order['mid'], 'order_id' => $order['id'], 'role' => $order['role'], 'area' => $order['area']);
-                    $area = Dever::db('agent/member_area')->find($area_where);
+                    $area = Dever::db('agent/member_area')->find($area_data);
 
                     if (!$area) {
                         $area_data['type'] = $order['get_type'];
-                        Dever::db('agent/member_area')->insert($area_where);
+                        $area_data['price'] = $order['price'];
+                        Dever::db('agent/member_area')->insert($area_data);
                     }
                 }
             }
@@ -101,9 +136,13 @@ class Manage
                 $data['idcard'] = $order['idcard'];
                 $data['idcard_front'] = $order['idcard_front'];
                 $data['idcard_back'] = $order['idcard_back'];
+                $data['company_name'] = $order['company_name'];
+                $data['company_pic'] = $order['company_pic'];
+                $data['company_number'] = $order['company_number'];
                 $data['role'] = 1;
                 $data['parent_mid'] = $order['parent_mid'];
                 $update['mid'] = Dever::db('agent/member')->insert($data);
+                Dever::load('invite/api')->setRelation($update['mid'], $data['parent_mid']);
             }
             Dever::db('agent/order')->update($update);
             $order['mid'] = $update['mid'];
@@ -191,18 +230,50 @@ class Manage
                 if (!$info) {
                     $insert = $where;
                     $insert['cash'] = $t[3];
+                    $insert['per'] = $t[5];
                     Dever::db('agent/order_cash')->insert($insert);
                 } else {
                     $update['where_id'] = $info['id'];
                     $update['cash'] = $t[3];
+                    $update['per'] = $t[5];
                     Dever::db('agent/order_cash')->update($update);
                 }
-                if ($where['type'] == 1) {
-                    Dever::load('agent/lib/member')->up($where['parent_mid'], $t[3], $order['price'], 1);
-                } elseif ($where['type'] == 2) {
-                    Dever::load('agent/lib/member')->up($where['parent_mid'], $t[3], $order['price'], 1, 'upGroupSell');
-                }
+
+                $member = Dever::db('agent/member')->find($where['mid']);
+                $desc = $member['name'] . '成为代理商,佣金'.$t[5].'%';
+                Dever::load('agent/lib/member')->up($order['id'], $order['role'], $where['type'], $where['parent_mid'], $t[3], $order['agent_cash'], $t[4], $desc);
+            }
+        }
+    }
+
+    public function sellOrderUpdate($id, $name, $data)
+    {
+        Dever::config('base')->hook = true;
+        $update = array();
+        $audit = Dever::param('audit', $data);
+        $info = Dever::db('agent/dh_order')->one($id);
+        if ($audit > 1 && $info && $info['status'] == 2) {
+            if ($audit == 2) {
+                # 成功
+                Dever::setInput('order_id', $id);
+                Dever::load('agent/lib/dhorder.audit_commit');
+            } else {
+                Dever::db('agent/dh_order')->update(array('where_id' => $id, 'status' => 7));
             }
         }
     }
+
+    # 确认收货
+    public function setSellOrderStatus_api()
+    {
+        $order_id = Dever::input('order_id');
+
+        $info = Dever::db('agent/dh_order')->find($order_id);
+        if ($info) {
+            Dever::load('agent/lib/dhorder')->finish($info, $info['shop_id']);
+            return 'reload';
+        } else {
+            Dever::alert('错误的订单号');
+        }
+    }
 }

+ 28 - 8
service/agent/lib/Member.php

@@ -6,6 +6,20 @@ use Dever;
 
 class Member
 {
+    public function getInfo($member)
+    {
+        $member['area'] = Dever::load("area/api.string", $member['area'], '/');
+        $member['role'] = Dever::db('setting/role')->find($member['role']);
+        $member['level'] = Dever::db('setting/level')->find($member['level_id']);
+
+        $member['shop'] = array();
+        if ($member['shop_id'] && $member['shop_id'] > 0) {
+            $member['shop'] = Dever::db('shop/info')->getOne($member['shop_id']);
+        }
+
+        return $member;
+    }
+
     /**
      * 检测邀请码
      *
@@ -72,7 +86,7 @@ class Member
      * 更新余额和业绩
      * @return mixed
      */
-    public function up($mid, $cash, $sell, $type = 1, $method = 'upSell', $level_id = false)
+    public function up($order_id, $role, $type, $mid, $cash, $sell, $level_id = false, $desc = '')
     {
         $data['where_id'] = $mid;
         $data['cash'] = $cash;
@@ -80,12 +94,18 @@ class Member
         if ($level_id) {
             $data['level_id'] = $level_id;
         }
-        
+        if ($type == 1) {
+            $method = 'upSell';
+        } else {
+            $method = 'upGroupSell';
+        }
+        $data['clear'] = true;
         Dever::db('agent/member')->$method($data);
 
-        $info = Dever::db('agent/member')->find($mid);
-
         # 增加日志
+        Dever::load('bill/lib/cash')->up($mid, $type, $cash, $role, $order_id, $desc, 2);
+
+        Dever::load('bill/lib/sell')->up($mid, $type, $sell, $role, $order_id, 2);
 
     }
 
@@ -103,7 +123,7 @@ class Member
 
         $result['代理商信息'] = $this->getShowInfo($member);
 
-        if ($member['parent_mid']) {
+        if ($member['parent_mid'] && $member['parent_mid'] > 0) {
             $parent = Dever::db('agent/member')->one($member['parent_mid']);
             $result['邀请人信息'] = $this->getShowInfo($parent);
         }
@@ -129,13 +149,13 @@ class Member
                 array
                 (
                     array('类型', $config_type[$member['type']]),
-                    array('名', $member_name),
-                    array('号', $member_number),
+                    array('名', $member_name),
+                    array('身份证号', $member_number),
                 ),
 
                 array
                 (
-                    array('照片', $idcard_pic),
+                    array('身份证照片', $idcard_pic),
                 )
             ),
         );

+ 133 - 76
service/agent/lib/Order.php

@@ -13,6 +13,7 @@ class Order
      */
     public function action($mid)
     {
+        $member = array();
     	if ($mid > 0) {
     		$member = Dever::db('agent/member')->find($mid);
     		if (!$member) {
@@ -25,17 +26,20 @@ class Order
 	        $data['idcard'] = $member['idcard'];
 	        $data['idcard_front'] = $member['idcard_front'];
 	        $data['idcard_back'] = $member['idcard_back'];
+            $data['company_name'] = $member['company_name'];
+            $data['company_pic'] = $member['company_pic'];
+            $data['company_number'] = $member['company_number'];
     	} else {
     		$mobile = Dever::input('mobile');
 	        $where['mobile'] = Dever::load('agent/lib/member')->checkMobile($mobile);
-	        $member = Dever::db('agent/member')->find($where);
+	        $checkMember = Dever::db('agent/member')->find($where);
 
-	        if ($member) {
+	        if ($checkMember) {
 	            Dever::alert('注册失败,手机号已存在');
 	        }
 
-	        $member = Dever::db('agent/member')->find();
-	        if ($member) {
+	        $checkMember = Dever::db('agent/member')->find();
+	        if ($checkMember) {
 	        	$parent_member = Dever::load('agent/lib/member')->checkCode();
 	        	$parent_mid = $parent_member['id'];
 	        } else {
@@ -47,6 +51,9 @@ class Order
 	        $data['idcard'] = Dever::input('idcard');
 	        $data['idcard_front'] = Dever::input('idcard_front');
 	        $data['idcard_back'] = Dever::input('idcard_back');
+            $data['company_name'] = Dever::input('company_name');
+            $data['company_pic'] = Dever::input('company_pic');
+            $data['company_number'] = Dever::input('company_number');
     	}
 
     	//Dever::load('agent/lib/member')->checkMcode($mobile);
@@ -54,33 +61,32 @@ class Order
         $data['mobile'] = $mobile;
         $data['parent_mid'] = $parent_mid;
 
-        if ($data['type'] == 1) {
-        	$name = '姓名';
-        	$idcard_name = '身份证号';
-
-        	if (!$data['idcard_front']) {
-	            Dever::alert('身份证正面不能为空');
-	        }
-	        if (!$data['idcard_back']) {
-	            Dever::alert('身份证反面不能为空');
-	        }
-
-        } else {
-        	$name = '公司名称';
-        	$idcard_name = '营业执照号码';
+        if (!$data['idcard_front']) {
+            Dever::alert('身份证正面不能为空');
+        }
+        if (!$data['idcard_back']) {
+            Dever::alert('身份证反面不能为空');
+        }
 
-        	if (!$data['idcard_front']) {
-	            Dever::alert('营业执照不能为空');
-	        }
+        if ($data['type'] == 2) {
+        	if (!$data['company_name']) {
+                Dever::alert('公司名称不能为空');
+            }
+            if (!$data['company_pic']) {
+                Dever::alert('营业执照照片不能为空');
+            }
+            if (!$data['company_number']) {
+                Dever::alert('营业执照号码不能为空');
+            }
         }
         if (!$data['name']) {
-            Dever::alert($name . '不能为空');
+            Dever::alert('姓名不能为空');
         }
         if (!$data['idcard']) {
-            Dever::alert($idcard_name . '不能为空');
+            Dever::alert('身份证号不能为空');
         }
 
-        $data += $this->getPrice();
+        $data += $this->getPrice($member);
 
         $data['sign'] = Dever::input('sign');
         if (!$data['sign']) {
@@ -92,7 +98,13 @@ class Order
         # 付款信息
         $data['pay_type'] = Dever::input('pay_type', 1);
 
-        if ($data['pay_type'] == 3) {
+        if ($data['pay_type'] == 1 && $data['role']['type'] == 1) {
+            Dever::alert('暂时不支持在线支付');
+            $data['openid'] = Dever::input('openid');
+            if (!$data['openid']) {
+                Dever::alert('请先授权');
+            }
+        } elseif ($data['pay_type'] == 3) {
         	$data['bank_id'] = Dever::input('bank_id');
         	if (!$data['bank_id']) {
         		Dever::alert('请选择银行');
@@ -101,24 +113,17 @@ class Order
         	if (!$data['bank_card']) {
         		Dever::alert('请输入银行卡号');
         	}
-        } elseif ($data['pay_type'] == 2) {
+        } else {
         	# 汇款
         	$data['pay_pic'] = Dever::input('pay_pic');
         	if (!$data['pay_pic']) {
         		Dever::alert('请上传打款凭证');
         	}
-        } elseif ($data['pay_type'] == 1) {
-        	Dever::alert('暂时不支持在线支付');
-        	$data['openid'] = Dever::input('openid');
-        	if (!$data['openid']) {
-        		Dever::alert('请先授权');
-        	}
-        } else {
-        	Dever::alert('付款方式不正确');
+            $data['pay_price'] = Dever::input('pay_price');
         }
 
         $where['mobile'] = $data['mobile'];
-        $where['role'] = $data['role'];
+        $where['role'] = $data['role']['id'];
         $where['area'] = $data['area'];
 
         $info = Dever::db('agent/order')->find($where);
@@ -126,6 +131,8 @@ class Order
         	Dever::alert('请勿重复提交');
         }
 
+        $data['role'] = $where['role'];
+
         $data['id'] = Dever::db('agent/order')->insert($data);
 
         if ($data['id']) {
@@ -243,29 +250,33 @@ class Order
      *
      * @return mixed
      */
-    public function getPrice()
+    public function getPrice($member = false)
     {
+        if ($member && !is_array($member)) {
+            $member = Dever::db('agent/member')->find($member);
+        }
+        
     	$data['role'] = Dever::input('role');
         if (!$data['role']) {
             Dever::alert('代理类型不能为空');
         }
-        $role = Dever::db('setting/role')->find($data['role']);
-        if (!$role) {
+        $data['role'] = Dever::db('setting/role')->find($data['role']);
+        if (!$data['role']) {
         	Dever::alert('代理类型不正确');
         }
-        if ($role['isbuy'] != 1) {
+        if ($data['role']['isbuy'] != 1) {
             Dever::alert('代理类型不正确');
         }
         $data['area'] = Dever::input('area');
-        if ($role['type'] == 2 && !$data['area']) {
+        if ($data['role']['type'] == 2 && !$data['area']) {
             Dever::alert('代理区域不能为空');
         }
 
         # 计算支付金额
-        if ($role['type'] == 1) {
-        	$data['price'] = $role['price'];
-        } elseif ($role['type'] == 2) {
-        	$data['price'] = Dever::load('area/api')->getPrice($role['area'], $data['area']);
+        if ($data['role']['type'] == 1) {
+        	$data['price'] = $data['role']['price'];
+        } elseif ($data['role']['type'] == 2) {
+        	$data['price'] = Dever::load('area/api')->getPrice($data['role']['area'], $data['area']);
         	if ($data['price'] <= 0) {
         		Dever::alert('代理区域的代理价格为空,请联系客服');
         	}
@@ -283,6 +294,17 @@ class Order
             $data['price_str'] .= '整';
         }
 
+        if ($member) {
+            $area = Dever::db('agent/member_area')->getOne(array('mid' => $member['id'], 'type' => 1));
+            if ($area && $area['price'] > 0 && $data['price'] > $area['price']) {
+                $data['price'] -= $area['price'];
+            } else {
+                Dever::alert('代理区域无法升级');
+            }
+        }
+
+        $data['f_price'] = $data['price'];
+
         return $data;
     }
 
@@ -367,15 +389,9 @@ class Order
             (
                 array
                 (
-                    array('手机号', $info['mobile']),
                     array('类型', $config['type'][$info['type']]),
-                    array('名称', $info['name']),
-                ),
-
-                array
-                (
-                    array('证件号码', $info['idcard']),
-                    array('证件照片', $idcard_pic),
+                    array('姓名', $info['name']),
+                    array('手机号', $info['mobile']),
                 ),
 
                 array
@@ -387,13 +403,30 @@ class Order
 
                 array
                 (
-                    array('代理商签名', $sign_pic),
+                    array('身份证号码', $info['idcard']),
+                    array('身份证照片', $idcard_pic),
                 ),
             ),
         );
 
-        $soft = '';
-        if ($role['soft'] && $role['soft'] > 0) {
+        if ($info['type'] == 2) {
+            $company_pic = '&nbsp;&nbsp;<a href="'.$info['company_pic'].'" target="_blank"><img src="'.$info['company_pic'].'" width="150" /></a>';
+            $result['账号信息']['content'][] = array
+            (
+                array('企业名称', $info['company_name']),
+                array('营业执照号码', $info['company_number']),
+                array('营业执照照片', $company_pic),
+            );
+        }
+
+        $result['账号信息']['content'][] = array
+        (
+            array('代理商签名', $sign_pic),
+        );
+
+        $cstatus = '';
+        if ($role['soft'] && $role['soft'] && $info['price'] > 0 && $info['status'] > 1) {
+            $cstatus = ',cstatus';
             //$soft = '【<a href="" style="color:blue">拆分代理费</a>】';
         }
 
@@ -405,13 +438,24 @@ class Order
                 array
                 (
                     array('支付方式', $config['pay_type'][$info['pay_type']]),
-                    array('支付金额', '¥' . $info['price'] . '元' . $soft),
+                    array('支付状态', $config['pay_status'][$info['pay_status']]),
+                    array('付款备注', $info['desc']),
+                ),
+
+                array
+                (
+                    array('应付金额', '¥' . $info['f_price'] . '元'),
+                    array('实付金额', '¥' . $info['price'] . '元'),
+                ),
+
+                array
+                (
+                    array('代理费', '¥' . $info['agent_cash'] . '元'),
+                    array('软件服务费', '¥' . $info['soft_cash'] . '元'),
                 ),
 
                 array
                 (
-                    array('付款备注', $info['desc']),
-                    array('支付状态', $config['pay_status'][$info['pay_status']]),
                     array('支付凭证', $pay_pic),
                 ),
             ),
@@ -420,19 +464,28 @@ class Order
         $button = array();
 
         if ($info['status'] == 1) {
+            $purl = Dever::url('project/database/update?project=agent&table=order_process&order_id='.$info['id'].'&status=1&col=order_id,status,audit,desc', 'manage');
+            if (isset($process[1]) && $process[1]) {
+                $purl .= '&where_id=' . $process[1]['id'];
+            }
             $button[] = array
             (
                 'type' => 'edit',
-                'link' => Dever::url('project/database/update?project=agent&table=order_process&order_id='.$info['id'].'&status=1&col=order_id,status,audit,desc', 'manage'),
+                'link' => $purl,
                 'name' => '业务初审',
             );
         } elseif ($info['status'] == 2) {
+            $purl = Dever::url('project/database/update?project=agent&table=order_process&order_id='.$info['id'].'&status=2&col=order_id,status,audit,price,desc'.$cstatus.'&price='.$info['price'], 'manage');
+            if (isset($process[2]) && $process[2]) {
+                $purl .= '&where_id=' . $process[2]['id'];
+            }
             $button[] = array
             (
                 'type' => 'edit',
-                'link' => Dever::url('project/database/update?project=agent&table=order_process&order_id='.$info['id'].'&status=2&col=order_id,status,audit,get_type,desc', 'manage'),
+                'link' => $purl,
                 'name' => '财务终审',
             );
+            
         } elseif ($info['status'] == 3) {
             $purl = Dever::url('project/database/update?project=agent&table=order_process&order_id='.$info['id'].'&status=3&col=order_id,status,type', 'manage');
             if (isset($process[3]) && $process[3]) {
@@ -446,7 +499,7 @@ class Order
             );
         }
 
-        if ($info['status'] == 3 || $info['status'] == 4) {
+        if (($info['status'] == 3 || $info['status'] == 4) && $info['agent_cash'] > 0) {
 
             if (isset($process[3]) && $process[3]) {
                 $process[3]['type'] = explode(',', $process[3]['type']);
@@ -454,7 +507,7 @@ class Order
 
             if ($parent_member) {
                 # 这里要获取上级信息
-                $table['head'] = array('名称', '角色', '级别', '分润(元)');
+                $table['head'] = array('名称', '角色', '级别', '分润比例', '分润(元)');
                 $table['body'] = array();
 
                 $parents[0] = array('uid' => $parent_member['id'], 'level' => 0);
@@ -465,7 +518,7 @@ class Order
                 $parent_per = 0;
                 foreach ($parents as $k => $v) {
                     $parent_info = Dever::db('agent/member')->find($v['uid']);
-                    if ($parent_info) {
+                    if ($parent_info && $parent_info['status'] == 2) {
                         $parent_role = Dever::db('setting/role')->find($parent_info['role']);
                         if ($parent_info['level_id'] > 0) {
                             $parent_level = Dever::db('setting/level')->find($parent_info['level_id']);
@@ -478,15 +531,16 @@ class Order
 
                         if ($order_cash) {
                             $cash = $order_cash['cash'];
+                            $parent_level['value'] = $order_cash['per'];
                         } else {
                             # 根据团队业绩获取等级
                             # 获取当前用户的团队业绩
                             if (!$parent_info['group_sell']) {
                                 $parent_info['group_sell'] = 0;
                             }
-                            $sell = $parent_info['group_sell'] + $info['price'];
+                            $sell = $parent_info['group_sell'] + $info['agent_cash'];
 
-                            $level = Dever::db('setting/level')->getOne(array('target' => $sell));
+                            $level = Dever::db('setting/level')->getOne(array('target' => ($sell/10000)));
                             if ($level && $level['level'] > $parent_level['level']) {
                                 # 升级
                                 $old = $parent_level;
@@ -504,7 +558,7 @@ class Order
                                     $parent_level['value'] = $parent_level['value'] - $parent_per;
                                 }
                                 if ($parent_level['value'] > 0) {
-                                    $cash += $info['price'] * ($parent_level['value']/100);
+                                    $cash += $info['agent_cash'] * ($parent_level['value']/100);
                                     $parent_per = $parent_level['value'];
                                 }
                             }
@@ -519,22 +573,24 @@ class Order
                                 if ($reward) {
                                     if ($reward['num'] == 1) {
                                         if ($reward['value_type'] == 1) {
-                                            $zcash = $info['price'] * ($reward['value']/100);
+                                            $zcash = $info['agent_cash'] * ($reward['value']/100);
+                                            $per = $reward['value'];
                                         } else {
                                             $zcash = $reward['value'];
+                                            $per = 0;
                                         }
 
-                                        $parent_name .= '&nbsp;&nbsp;直推佣金:<a style="color:blue" class="set_cash" data-param="1-'.$info['id'].'-'.$parent_info['id'].'-'.$zcash.'-'.$parent_level['id'].'">' . $zcash . '</a>元';
+                                        $parent_name .= '&nbsp;&nbsp;直推佣金比例:'.$per.'%&nbsp;&nbsp;直推佣金:<a style="color:blue" class="set_cash" data-param="1-'.$info['id'].'-'.$parent_info['id'].'-'.$zcash.'-'.$parent_level['id'].'-'.$per.'">' . $zcash . '</a>元';
                                     }
                                 }
                             } else {
                                 $zcash = $order_cash['cash'];
-                                $parent_name .= '&nbsp;&nbsp;直推佣金:<a style="color:blue">' . $zcash . '</a>元';
+                                $parent_name .= '&nbsp;&nbsp;直推佣金比例:'.$order_cash['per'].'%&nbsp;&nbsp;直推佣金:<a style="color:blue">' . $zcash . '</a>元';
                             }
                         }
-                        $cash = '<a style="color:blue" class="set_cash" data-param="2-'.$info['id'].'-'.$parent_info['id'].'-'.$cash.'-'.$parent_level['id'].'">' . $cash . '</a>';
+                        $cash = '<a style="color:blue" class="set_cash" data-param="2-'.$info['id'].'-'.$parent_info['id'].'-'.$cash.'-'.$parent_level['id'].'-'.$parent_level['value'].'">' . $cash . '</a>';
 
-                        $table['body'][] = array($parent_info['name'], $parent_role['name'], $parent_level['name'], $cash);
+                        $table['body'][] = array($parent_info['name'], $parent_role['name'], $parent_level['name'], $parent_level['value'] . '%', $cash);
                     }
                 }
 
@@ -543,19 +599,20 @@ class Order
                     $parent_button = array();
                 } else {
                     $parent_title = '(未发放分润)';
+                    /*
                     $parent_button[] = array
                     (
                         'type' => 'link',
                         'link' => Dever::url('lib/order_set.home?order_id='.$info['id'].'&role_id=' . $info['role'], 'agent'),
                         'name' => '修改分润金额'
-                    );
+                    );*/
 
-                    $furl = Dever::url('lib/manage.set_commit?type=3&order_id='.$info['id'], 'agent');
+                    $furl = Dever::url('lib/manage.set_commit?json=1&type=3&order_id='.$info['id'], 'agent');
                     $parent_button[] = array
                     (
                         'type' => 'click',
                         'content' => 'setCash()',
-                        'name' => '确认分润比例<script>function setCash(){layer.confirm(\'确定进行此项操作吗?\', function(){var cash = [];$(\'.set_cash\').each(function(){cash.push($(this).attr(\'data-param\'));});$.post(\''.$furl.'\',{param:cash.join(",")}, function(){})})}</script>'
+                        'name' => '确认发放分润<script>function setCash(){layer.confirm(\'确定进行此项操作吗?\', function(){var cash = [];$(\'.set_cash\').each(function(){cash.push($(this).attr(\'data-param\'));});$.post(\''.$furl.'\',{param:cash.join(",")}, function(t){t=JSON.parse(t);showYes(t)})})}</script>'
                     );
                 }
                 
@@ -587,8 +644,8 @@ class Order
                 );
                 $process_button[] = array(
                     'type' => 'action',
-                    'link' => Dever::url('lib/manage.set_commit?type=2&order_id='.$info['id'], 'agent'),
-                    'name' => '发放权益'
+                    'link' => Dever::url('lib/manage.set_commit?json=1&type=2&order_id='.$info['id'], 'agent'),
+                    'name' => '确认发放权益'
                 );
             }
             

+ 4 - 1
service/agent/lib/Order_set.php

@@ -29,6 +29,9 @@ class Order_set
             $value = $id;
         }
 
+        $data = array();
+
+        /*
         $prize = Dever::db('setting/role_goods')->config['set']['prize'];
 
         $data[0]['id'] = -1;
@@ -80,7 +83,7 @@ class Order_set
                     $data[1]['children'][$k]['total'] = $info['num'];
                 }
             }
-        }
+        }*/
 
         $data = array_merge($data, Dever::load('goods/lib/set.getGoodsList', $value, $col, $table, 'type_id'));
 

+ 3 - 2
service/agent/lib/Set.php

@@ -16,7 +16,9 @@ class Set
     public function goods_api()
     {
         $id = Dever::input('id', 1);
+        $data = array();
 
+        /*
         $prize = Dever::db('setting/role_goods')->config['set']['prize'];
 
         $data[0]['id'] = -1;
@@ -69,8 +71,7 @@ class Set
                 }
             }
         }
-        
-        
+        */
         $data = array_merge($data, Dever::load('goods/lib/set.getGoodsList', $id, 'role_id', 'setting/role_goods', 'type_id'));
 
         return Dever::outDiy($data);

+ 166 - 0
service/agent/src/Address.php

@@ -0,0 +1,166 @@
+<?php
+namespace Agent\Src;
+
+use Dever;
+use Agent\Lib\Core;
+
+class Address extends Core
+{
+    # 获取默认地址
+    public function getDefaultAddress($mid)
+    {
+        $where['mid'] = $mid;
+        $where['type'] = 2;
+        $data = Dever::db('agent/member_address')->one($where);
+
+        return $data;
+    }
+
+    # 获取某个收货地址
+    public function getOne($mid, $id)
+    {
+        $where['mid'] = $mid;
+        $where['id'] = $id;
+        $data = Dever::db('agent/member_address')->find($where);
+
+        if ($data && Dever::project('area')) {
+            $data = $this->getInfo($data);
+        }
+
+        return $data;
+    }
+
+    # 获取地址列表
+    public function getAddress($mid)
+    {
+        $where['mid'] = $mid;
+        $data = Dever::db('agent/member_address')->getList($where);
+
+        if ($data && Dever::project('area')) {
+            foreach ($data as $k => $v) {
+                $data[$k] = $this->getInfo($v);
+            }
+        }
+
+        return $data;
+    }
+
+    private function getInfo($data)
+    {
+        $data['address_info'] = $data['add_string'] = $data['address'];
+        $data['province_name'] = $data['city_name'] = $data['county_name'] = '';
+        if ($data['province'] && $data['city'] && $data['county']) {
+            $info = Dever::db('area/province')->find($data['province']);
+            $data['province_name'] = $info['name'];
+
+            $info = Dever::db('area/city')->find($data['city']);
+            $data['city_name'] = $info['name'];
+
+            $info = Dever::db('area/county')->find($data['county']);
+            $data['county_name'] = $info['name'];
+
+            //$data['address_info'] = $data['province_name'] . $data['city_name'] . $data['county_name'] .','. $data['address'] .','. $data['house_number'];
+            $data['add_string'] = $data['province_name'] . $data['city_name'] . $data['county_name'] .','. $data['address'] .','. $data['house_number'] .','. $data['contact'] .','. $data['mobile'];
+        }
+
+        return $data;
+    }
+
+    # 删除和恢复
+    public function del($mid, $id, $state = 2)
+    {
+        $info = $this->getOne($mid, $id);
+        if ($info) {
+            $update['where_id'] = $info['id'];
+            $update['state'] = $state;
+            Dever::db('agent/member_address')->update($update);
+        } else {
+            Dever::alert('更新失败');
+        }
+
+        return 'ok';
+    }
+
+    # 添加或者更新地址接口
+    public function up()
+    {
+        $mid = $this->uid;
+        $id = Dever::input('id');
+        $type = Dever::input('type', 2);
+        $province = Dever::input('province');
+        $city = Dever::input('city');
+        $county = Dever::input('county');
+        $contact = Dever::input('contact');
+        $address = Dever::input('address');
+        $country = Dever::input('country');
+        $mobile = Dever::input('mobile');
+        $sex = Dever::input('sex');
+        $house_number = Dever::input('house_number');
+        $tag = Dever::input('tag');
+
+        return $this->upAddress($id, $mid, $type, $mobile, $contact, $province, $city, $county, $address, $country, $sex, $house_number, $tag);
+    }
+
+    # 添加或者更新地址
+    public function upAddress($id, $mid, $type = 2, $mobile, $contact, $province = '', $city = '', $county = '', $address = '', $country = '', $sex = '', $house_number = '', $tag = '')
+    {
+        if ($contact) {
+            $update['contact'] = $contact;
+        }
+        
+    	if ($country) {
+    		$update['country'] = $country;
+    	}
+
+        if ($mobile) {
+            $update['mobile'] = $mobile;
+        }
+
+        if ($province) {
+            $update['province'] = $province;
+        }
+
+        if ($city) {
+            $update['city'] = $city;
+        }
+
+        if ($county) {
+            $update['county'] = $county;
+        }
+        
+        if ($province && $city && $county) {
+	        $update['area'] = $province . ',' . $city . ',' . $county;
+        }
+
+        $update['type'] = $type;
+
+        if ($address) {
+            $update['address'] = $address;
+        }
+        if ($sex) {
+            $update['sex'] = $sex;
+        }
+        if ($house_number) {
+            $update['house_number'] = $house_number;
+        }
+        if ($tag) {
+            $update['tag'] = $tag;
+        }
+
+        if ($type == 2) {
+            Dever::db('agent/member_address')->updateType(array('where_type' => 2, 'set_type' => 1));
+        }
+        
+        if ($id) {
+            $update['where_id'] = $id;
+            Dever::db('agent/member_address')->update($update);
+        } else {
+            $update['mid'] = $mid;
+            $id = Dever::db('agent/member_address')->insert($update);
+        }
+
+
+
+        return $id;
+    }
+}

+ 3 - 1
service/agent/src/Auth.php

@@ -107,6 +107,8 @@ class Auth
     # 根据邀请码获取邀请人
     public function getInfoByCode()
     {
-        return Dever::load('agent/lib/member')->checkCode();
+        $this->data['user'] = Dever::load('agent/lib/member')->checkCode();
+        $this->data['config'] = Dever::db('setting/base')->one();
+        return $this->data;
     }
 }

+ 175 - 15
service/agent/src/My.php

@@ -14,14 +14,77 @@ class My extends Core
      */
     public function getInfo()
     {
-        $this->user['role'] = Dever::db('setting/role')->find($this->user['role']);
-        $this->user['level'] = Dever::db('setting/level')->find($this->user['level_id']);
+        $this->data['user'] = Dever::load('agent/lib/member')->getInfo($this->user);
 
-        $this->user['shop'] = array();
-        if ($this->user['shop_id'] && $this->user['shop_id'] > 0) {
-            $this->user['shop'] = Dever::db('shop/info')->getOne($this->user['shop_id']);
+        $this->data['config'] = Dever::db('setting/base')->one();
+
+        # 获取团队数量
+        $this->data['num'] = Dever::load('invite/api')->getChildNum($this->uid, 1);
+        
+    	return $this->data;
+    }
+
+    # 获取相同身份证的账号
+    public function getUser()
+    {
+        $where['id'] = $this->uid;
+        $where['idcard'] = $this->user['idcard'];
+        $this->data['user'] = Dever::db('agent/member')->getData($where);
+
+        if ($this->data['user']) {
+            foreach ($this->data['user'] as $k => $v) {
+                $this->data['user'][$k] = Dever::load('agent/lib/member')->getInfo($v);
+            }
+        }
+        return $this->data;
+    }
+
+    # 获取相同身份证的账号详情
+    public function getUserView()
+    {
+        $id = Dever::input('id');
+        $this->data['info'] = Dever::db('agent/member')->find($id);
+        if ($this->data['info'] && $this->data['info']['idcard'] == $this->user['idcard']) {
+            $this->data['info'] = Dever::load('agent/lib/member')->getInfo($this->data['info']);
+        } else {
+            Dever::alert('这不是您的子账户');
+        }
+
+        return $this->data;
+    }
+
+    # 获取门店
+    public function getShop()
+    {
+        $where['type'] = 10;
+        $where['area'] = Dever::input('area');
+        $this->data['shop'] = Dever::db('shop/info')->getAll($where);
+
+        $this->data['pshop'] = Dever::db('shop/info')->getInfo(array('type' => 10));
+
+        $id = Dever::input('id', $this->uid);
+        $this->data['info'] = Dever::db('agent/member')->find($id);
+        if ($this->data['info'] && $this->data['info']['idcard'] == $this->user['idcard']) {
+            
+        } else {
+            Dever::alert('这不是您的子账户');
         }
-    	return $this->user;
+        return $this->data;
+    }
+
+    # 设置门店
+    public function setShop()
+    {
+        $id = Dever::input('id');
+        $shop_id = Dever::input('shop_id');
+        $this->data['info'] = Dever::db('agent/member')->find($id);
+        if ($this->data['info'] && $this->data['info']['idcard'] == $this->user['idcard']) {
+            Dever::db('agent/member')->update(array('where_id' => $id, 'shop_id' => $shop_id));
+        } else {
+            Dever::alert('这不是您的子账户');
+        }
+
+        return 'ok';
     }
 
     # 账号与代理区域
@@ -30,21 +93,25 @@ class My extends Core
         $this->data['user'] = $this->getInfo();
 
         $where['mid'] = $this->data['user']['id'];
-        $this->ddata['area'] = Dever::db('agent/member_area')->getData($where);
 
-        if ($this->ddata['area']) {
-            foreach ($this->ddata['area'] as $k => $v) {
-                $this->ddata['area'][$k]['area'] = Dever::load("area/api.string", $v['area']);
+        /*
+        $this->data['area'] = Dever::db('agent/member_area')->getData($where);
+
+        if ($this->data['area']) {
+            foreach ($this->data['area'] as $k => $v) {
+                $this->data['area'][$k]['area'] = Dever::load("area/api.string", $v['area']);
             }
-        }
+        }*/
 
         $this->data['button'] = array();
+        $this->data['button']['up'] = 2;
+        $this->data['button']['buy'] = 2;
         if ($this->data['user']['role']) {
             if ($this->data['user']['role']['levelup'] == 1) {
-                $this->data['button'][] = 'up';
+                $this->data['button']['up'] = 1;
             }
             if ($this->data['user']['role']['isbuy'] == 1) {
-                $this->data['button'][] = 'buy';
+                $this->data['button']['buy'] = 2;//不允许购买新区域
             }
         }
 
@@ -61,7 +128,7 @@ class My extends Core
         return $this->data;
     }
 
-    # 购买新区域
+    # 购买新区域 & 账号升级
     public function buyArea()
     {
         $state = Dever::load('agent/lib/order')->action($this->uid);
@@ -87,7 +154,8 @@ class My extends Core
         $where['role'] = Dever::input('role');
         $where['area'] = Dever::input('area');
 
-        $this->data = Dever::load('agent/lib/order')->getPrice();
+        $this->data = Dever::load('agent/lib/order')->getPrice($this->user);
+        $this->data['area_string'] = Dever::load("area/api.string", $where['area'], ' / ');
         $info = Dever::db('agent/member_area')->find($where);
 
         # 1已被代理 2未被代理
@@ -168,12 +236,104 @@ class My extends Core
     # 我的权益
     public function goodsList()
     {
+        $where['type'] = Dever::input('type', 1);
+        $where['mid'] = $this->uid;
+        $this->data['list'] = Dever::db('agent/member_goods')->getData($where);
+        $this->data['type'] = $where['type'];
+        if ($this->data['list']) {
+            foreach ($this->data['list'] as $k => $v) {
+                if ($v['type'] == 1) {
+                    $goods_info = Dever::load('goods/lib/info')->getInfoBySku($v['type_id'], $v['sku_id']);
+                    if (isset($goods_info['sku'])) {
+                        $sku = $goods_info['sku']['string'];
+                    } else {
+                        $sku = '';
+                    }
+                    
+                    $this->data['list'][$k] += array
+                    (
+                        'pic' => $goods_info['cover'],
+                        'name' => $goods_info['name'],
+                        'sku' => $sku,
+                        'price' => $goods_info['price'],
+                    );
+                } elseif ($v['type'] == 2) {
+                    $card = Dever::db('card/info')->find($v['type_id']);
+
+                    $this->data['list'][$k] += array
+                    (
+                        'name' => $card['name'],
+                        'sku' => '',
+                        'price' => $card['price'],
+                    );
+                } elseif ($v['type'] == 3) {
+                    $prize = Dever::db('setting/role_goods')->config['set']['prize'];
+                    $this->data['list'][$k] += array
+                    (
+                        'name' => $prize[$v['type_id']],
+                        'sku' => '',
+                        'price' => 0,
+                    );
+                }
+            }
+        }
 
+        return $this->data;
+    }
+
+    # 兑换权益
+    public function dhGoods()
+    {
+        $type = Dever::input('type', 1);
+        $this->data = Dever::load('agent/lib/dhorder')->goods($this->uid);
+
+        return $this->data;
+    }
+
+    # 兑换权益 确认订单
+    public function dhGoodsAct_commit()
+    {
+        $type = Dever::input('type', 1);
+        $data = Dever::load('agent/lib/dhorder')->goods($this->uid);
+        $address_id = Dever::input('address_id');
+        if (!$address_id) {
+            Dever::alert('请选择配送地址');
+        }
+        $dh_type = 1;
+        if ($type == 3) {
+            $dh_type = 2;
+        }
+        $info = Dever::input('info');
+
+        return Dever::load('agent/lib/dhorder')->action($this->user, $data['name'], $data['num'], $data['price'], $data['list'], $address_id, $dh_type, $type, $info);
     }
 
     # 我的权益订单
     public function goodsOrder()
     {
+        return Dever::load('agent/lib/dhorder')->getList($this->uid);
+    }
+
+    # 我的权益订单详情
+    public function goodsOrderView()
+    {
+        $id = Dever::input('order_id');
+        return Dever::load('agent/lib/dhorder')->getView($this->uid, $id);
+    }
+
+    # 获取我的团队
+    public function getGroup()
+    {
+        # 获取团队数量
+        $this->data['user'] = Dever::load('invite/api')->getChild($this->uid, 1);
 
+        if ($this->data['user']) {
+            foreach ($this->data['user'] as $k => $v) {
+                $v = Dever::db('agent/member')->find($v['to_uid']);
+                $this->data['user'][$k] = Dever::load('agent/lib/member')->getInfo($v);
+            }
+        }
+
+        return $this->data;
     }
 }

+ 5 - 0
service/agent/template/manage/dh_order_goods.php

@@ -0,0 +1,5 @@
+<?php
+
+$view
+->fetch('#show', 'agent/lib/dhorder.show')
+->display();

+ 217 - 0
service/bill/database/cash.php

@@ -0,0 +1,217 @@
+<?php
+
+$status = array
+(
+    1 => '待审核',
+    2 => '已审核',
+    3 => '已作废',
+);
+
+$type = array
+(
+    1 => '直推佣金',
+    2 => '市场培训费',
+    3 => '代理区域分润',
+    4 => '活动分佣',
+    11 => '提现',
+);
+
+$role = function()
+{
+	$array = array();
+	$data = Dever::load('setting/role-state');
+	if($data)
+	{
+		$array += $data;
+	}
+	return $array;
+};
+
+return array
+(
+    # 表名
+    'name' => 'cash',
+    # 显示给用户看的名称
+    'lang' => '资金流水',
+    'set' => array
+    (
+    	'status' => $status,
+    	'type' => $type,
+    ),
+    'order' => 99,
+    # 数据结构
+    'struct' => array
+    (
+    
+        'id'        => array
+        (
+            'type'      => 'int-11',
+            'name'      => 'ID',
+            'default'   => '',
+            'desc'      => '',
+            'match'     => 'is_numeric',
+            'search'    => 'order',
+            //'list'        => true,
+        ),
+
+        'mid'      => array
+        (
+            'type'      => 'int-11',
+            'name'      => '代理商',
+            'default'   => '-1',
+            'desc'      => '代理商',
+            'match'     => 'is_string',
+            'update'    => 'text',
+            'searchs'    => array
+            (
+                'api' => 'agent/member-select',
+                'col' => 'name',
+                'result' => 'id',
+            ),
+            'list'      => 'Dever::load("agent/member-find#name", {mid})',
+        ),
+
+        'order_num'      => array
+        (
+            'type'      => 'varchar-100',
+            'name'      => '流水号',
+            'default'   => '',
+            'desc'      => '流水号',
+            'match'     => 'is_string',
+            'update'    => 'text',
+            'search'    => 'fulltext',
+            'list'      => true,
+            'list_order'  => -1,
+        ),
+
+        'role'      => array
+        (
+            'type'      => 'int-11',
+            'name'      => '代理角色',
+            'default'   => '',
+            'desc'      => '代理角色',
+            'match'     => 'is_numeric',
+            //'search'	=> 'select',
+            'update'    => 'checkbox',
+            'option'    => $role,
+            //'list'      => true,
+        ),
+
+        'type'      => array
+        (
+            'type'      => 'int-11',
+            'name'      => '交易类型',
+            'default'   => '1',
+            'desc'      => '交易类型',
+            'match'     => 'is_numeric',
+            'search'    => 'select',
+            'update'    => 'checkbox',
+            'option'    => $type,
+            'list'      => true,
+        ),
+
+        'type_id'      => array
+        (
+            'type'      => 'int-11',
+            'name'      => '交易来源id',
+            'default'   => '',
+            'desc'      => '交易来源id',
+            'match'     => 'is_string',
+            'update'    => 'text',
+        ),
+
+        'cash'      => array
+        (
+            'type'      => 'float-11',
+            'name'      => '金额',
+            'default'   => '0',
+            'desc'      => '金额',
+            'match'     => 'is_numeric',
+            'update'    => 'text',
+            'list'      => true,
+        ),
+
+        'yue'      => array
+        (
+            'type'      => 'float-11',
+            'name'      => '操作后余额',
+            'default'   => '0',
+            'desc'      => '操作后余额',
+            'match'     => 'is_numeric',
+            'update'    => 'text',
+            'list'      => true,
+        ),
+
+        'status'        => array
+        (
+            'type'      => 'int-11',
+            'name'      => '交易状态',
+            'default'   => '1',
+            'desc'      => '交易状态',
+            'match'     => 'is_numeric',
+            'update'  	=> 'hidden',
+            'option'    => $status,
+            'search'    => 'select',
+            'list'      => true,
+        ),
+
+        'audit_desc'      => array
+        (
+            'type'      => 'varchar-600',
+            'name'      => '审核说明',
+            'default'   => '-',
+            'desc'      => '审核说明',
+            'match'     => 'is_string',
+            'update'    => 'text',
+            'list'      => true,
+        ),
+
+        'desc'      => array
+        (
+            'type'      => 'varchar-600',
+            'name'      => '资金说明',
+            'default'   => '',
+            'desc'      => '资金说明',
+            'match'     => 'is_string',
+            'update'    => 'text',
+        ),
+
+        'state'     => array
+        (
+            'type'      => 'tinyint-1',
+            'name'      => '状态',
+            'default'   => '1',
+            'desc'      => '请选择状态',
+            'match'     => 'is_numeric',
+        ),
+        
+        'cdate'     => array
+        (
+            'type'      => 'int-11',
+            'name'      => '交易时间',
+            'match'     => array('is_numeric', time()),
+            'desc'      => '',
+            # 只有insert时才生效
+            //'insert'    => true,
+            'search'    => 'date',
+            'list'      => 'date("Y-m-d H:i:s", {cdate})',
+        ),
+    ),
+
+    'manage' => array
+    (
+        'insert' => false,
+        'delete' => false,
+        'edit' => false,
+
+        'list_button' => array
+        (
+            
+        ),
+    ),
+
+    'request' => array
+    (
+        
+    ),
+);

+ 149 - 0
service/bill/database/sell.php

@@ -0,0 +1,149 @@
+<?php
+
+$role = function()
+{
+	$array = array();
+	$data = Dever::load('setting/role-state');
+	if($data)
+	{
+		$array += $data;
+	}
+	return $array;
+};
+
+return array
+(
+    # 表名
+    'name' => 'sell',
+    # 显示给用户看的名称
+    'lang' => '业绩流水',
+    'order' => 90,
+    # 数据结构
+    'struct' => array
+    (
+    
+        'id'        => array
+        (
+            'type'      => 'int-11',
+            'name'      => 'ID',
+            'default'   => '',
+            'desc'      => '',
+            'match'     => 'is_numeric',
+            'search'    => 'order',
+            //'list'        => true,
+        ),
+
+        'mid'      => array
+        (
+            'type'      => 'int-11',
+            'name'      => '代理商',
+            'default'   => '-1',
+            'desc'      => '代理商',
+            'match'     => 'is_string',
+            'update'    => 'text',
+            'searchs'    => array
+            (
+                'api' => 'agent/member-select',
+                'col' => 'name',
+                'result' => 'id',
+            ),
+            'list'      => 'Dever::load("agent/member-find#name", {mid})',
+        ),
+
+        'order_num'      => array
+        (
+            'type'      => 'varchar-100',
+            'name'      => '流水号',
+            'default'   => '',
+            'desc'      => '流水号',
+            'match'     => 'is_string',
+            'update'    => 'text',
+            'search'    => 'fulltext',
+            'list'      => true,
+        ),
+
+        'order_id'      => array
+        (
+            'type'      => 'int-11',
+            'name'      => '代理商订单id',
+            'default'   => '',
+            'desc'      => '代理商订单id',
+            'match'     => 'is_string',
+            'update'    => 'text',
+            'list'      => true,
+        ),
+
+        'role'      => array
+        (
+            'type'      => 'int-11',
+            'name'      => '代理角色',
+            'default'   => '',
+            'desc'      => '代理角色',
+            'match'     => 'is_numeric',
+            //'search'	=> 'select',
+            'update'    => 'checkbox',
+            'option'    => $role,
+            //'list'      => true,
+        ),
+
+        'num'      => array
+        (
+            'type'      => 'float-11',
+            'name'      => '直推业绩',
+            'default'   => '0',
+            'desc'      => '直推业绩',
+            'match'     => 'is_numeric',
+            'update'    => 'text',
+            'list'      => true,
+        ),
+
+        'group_num'      => array
+        (
+            'type'      => 'float-11',
+            'name'      => '团队业绩',
+            'default'   => '0',
+            'desc'      => '团队业绩',
+            'match'     => 'is_numeric',
+            'update'    => 'text',
+            'list'      => true,
+        ),
+
+        'state'     => array
+        (
+            'type'      => 'tinyint-1',
+            'name'      => '状态',
+            'default'   => '1',
+            'desc'      => '请选择状态',
+            'match'     => 'is_numeric',
+        ),
+        
+        'cdate'     => array
+        (
+            'type'      => 'int-11',
+            'name'      => '申请时间',
+            'match'     => array('is_numeric', time()),
+            'desc'      => '',
+            # 只有insert时才生效
+            //'insert'    => true,
+            'search'    => 'date',
+            'list'      => 'date("Y-m-d H:i:s", {cdate})',
+        ),
+    ),
+
+    'manage' => array
+    (
+        'insert' => false,
+        'delete' => false,
+        'edit' => false,
+
+        'list_button' => array
+        (
+            
+        ),
+    ),
+
+    'request' => array
+    (
+        
+    ),
+);

+ 8 - 0
service/bill/index.php

@@ -0,0 +1,8 @@
+<?php
+
+define('DEVER_APP_NAME', 'bill');
+define('DEVER_APP_LANG', '财务管理');
+define('DEVER_APP_PATH', dirname(__FILE__) . DIRECTORY_SEPARATOR);
+define('DEVER_MANAGE_ORDER', 19);
+define('DEVER_MANAGE_ICON', 'glyphicon glyphicon-tower layui-icon-print');
+include(DEVER_APP_PATH . '../boot.php');

+ 46 - 0
service/bill/lib/Cash.php

@@ -0,0 +1,46 @@
+<?php
+
+namespace Bill\Lib;
+
+use Dever;
+
+class Cash
+{
+    public function up($mid, $type, $cash, $role, $type_id, $desc, $status)
+    {
+        $member = Dever::db('agent/member')->find(array('id' => $mid, 'clear' => true));
+        if ($member['status'] <= 2) {
+        	$where['mid'] = $mid;
+        	$where['type'] = $type;
+        	$where['type_id'] = $type_id;
+        	$where['clear'] = true;
+        	$info = Dever::db('bill/cash')->find($where);
+        	if (!$info) {
+        		$data = $where;
+        		$data['order_num'] = $this->getOrderId();
+        		$data['yue'] = $member['cash'];
+        		$data['cash'] = $cash;
+        		$data['role'] = $role;
+        		$data['desc'] = $desc;
+        		$data['status'] = $status;
+        		Dever::db('bill/cash')->insert($data);
+        	}
+        }
+    }
+
+    /**
+     * 生成订单号
+     *
+     * @return mixed
+     */
+    public function getOrderId()
+    {
+        $where['order_num'] = Dever::order('C');
+        $state = Dever::db('bill/cash')->one($where);
+        if (!$state) {
+            return $where['order_num'];
+        } else {
+            return $this->getOrderId();
+        }
+    }
+}

+ 57 - 0
service/bill/lib/Sell.php

@@ -0,0 +1,57 @@
+<?php
+
+namespace Bill\Lib;
+
+use Dever;
+
+class Sell
+{
+    public function up($mid, $type, $cash, $role, $type_id)
+    {
+        $member = Dever::db('agent/member')->find(array('id' => $mid, 'clear' => true));
+        if ($member['status'] <= 2) {
+        	$where['mid'] = $mid;
+        	$where['order_id'] = $type_id;
+        	$where['clear'] = true;
+        	$info = Dever::db('bill/sell')->find($where);
+        	if (!$info) {
+        		$data = $where;
+        		$data['order_num'] = $this->getOrderId();
+        		if ($type == 1) {
+        			$data['num'] = $cash;
+        		} else {
+        			$data['group_num'] = $cash;
+        		}
+        		
+        		$data['role'] = $role;
+        		Dever::db('bill/sell')->insert($data);
+        	} else {
+        		$data = array();
+        		$data['where_id'] = $info['id'];
+        		if ($type == 1) {
+        			$data['num'] = $cash;
+        		} else {
+        			$data['group_num'] = $cash;
+        		}
+        		
+        		Dever::db('bill/sell')->update($data);
+        	}
+        }
+    }
+
+    /**
+     * 生成订单号
+     *
+     * @return mixed
+     */
+    public function getOrderId()
+    {
+        $where['order_num'] = Dever::order('S');
+        $state = Dever::db('bill/sell')->one($where);
+        if (!$state) {
+            return $where['order_num'];
+        } else {
+            return $this->getOrderId();
+        }
+    }
+}

+ 25 - 4
service/setting/database/base.php

@@ -35,6 +35,27 @@ return array
 			'update'	=> 'text',
 		),
 
+		'phone'      => array
+        (
+            'type'      => 'varchar-100',
+            'name'      => '客服电话',
+            'default'   => '',
+            'desc'      => '请输入客服电话',
+            'match'     => 'option',
+            'update'    => 'text',
+        ),
+
+		'desc'      => array
+        (
+            'type'      => 'text-255',
+            'name'      => '代理加盟介绍',
+            'default'   => '',
+            'desc'      => '代理加盟介绍',
+            'match'     => 'option',
+            'update'    => 'editor',
+            'key'       => '1',
+        ),
+
 		'bank_user'		=> array
 		(
 			'type' 		=> 'varchar-300',
@@ -42,7 +63,7 @@ return array
 			'default' 	=> '',
 			'desc' 		=> '银行卡开户名称',
 			'match' 	=> 'is_string',
-			'update'	=> 'text',
+			//'update'	=> 'text',
 		),
 
 		'bank_name'		=> array
@@ -52,7 +73,7 @@ return array
 			'default' 	=> '',
 			'desc' 		=> '银行卡支行名称',
 			'match' 	=> 'is_string',
-			'update'	=> 'text',
+			//'update'	=> 'text',
 		),
 
 		'bank_card'		=> array
@@ -62,7 +83,7 @@ return array
 			'default' 	=> '',
 			'desc' 		=> '银行卡卡号',
 			'match' 	=> 'is_string',
-			'update'	=> 'text',
+			//'update'	=> 'text',
 		),
 		
         'state'     => array
@@ -90,7 +111,7 @@ return array
 		'col' => 'name,cdate',
 		'value' => array
 		(
-			'"代理商管理系统",' . time(),
+			'"厨人意料",' . time(),
 		),
 	),
 

+ 6 - 6
service/setting/database/level.php

@@ -60,33 +60,33 @@ return array
 
         'target'      => array
         (
-            'type'      => 'varchar-15',
+            'type'      => 'float-11',
             'name'      => '目标额-成为该等级的团队业绩总数,以万为单位',
             'default'   => '0',
             'desc'      => '目标额',
-            'match'     => 'is_string',
+            'match'     => 'is_numeric',
             'update'    => 'text',
             'list'      => true,
         ),
 
         'value'      => array
         (
-            'type'      => 'varchar-15',
+            'type'      => 'float-11',
             'name'      => '补贴额-补贴团队政策,这里以百分比为单位,如输入10,就是每次推广分润10%',
             'default'   => '0',
             'desc'      => '补贴额',
-            'match'     => 'is_string',
+            'match'     => 'is_numeric',
             'update'    => 'text',
             'list'      => true,
         ),
 
         'target_value'      => array
         (
-            'type'      => 'varchar-15',
+            'type'      => 'float-11',
             'name'      => '奖励额-总业绩的百分比奖励,这里以百分比为单位,如输入10,就是总业绩10%奖励',
             'default'   => '0',
             'desc'      => '奖励额',
-            'match'     => 'is_string',
+            'match'     => 'is_numeric',
             'update'    => 'text',
             'list'      => true,
         ),

+ 22 - 20
service/setting/database/role.php

@@ -85,7 +85,7 @@ return array
             'default'   => '1',
             'desc'      => '代理类型',
             'match'     => 'is_numeric',
-            //'update'  	=> 'radio',
+            'update'  	=> 'radio',
             'option'    => $type,
             'search'    => 'select',
             'list'      => true,
@@ -106,7 +106,7 @@ return array
 
         'price'      => array
         (
-            'type'      => 'varchar-50',
+            'type'      => 'float-11',
             'name'      => '代理价格-以元为单位',
             'default'   => '0',
             'desc'      => '代理价格',
@@ -119,7 +119,7 @@ return array
         'soft'      => array
         (
             'type'      => 'varchar-50',
-            'name'      => '软件服务费-如果填写软件服务费,则代理商订单可以进行拆分,这里填写百分比的数值,如10%软件服务费,这里填写10',
+            'name'      => '软件服务费-如果填写软件服务费,则代理商订单可以进行拆分,如带有%号,就表示是百分比,如10%',
             'default'   => '0',
             'desc'      => '软件服务费',
             'match'     => 'option',
@@ -128,35 +128,37 @@ return array
 
         'profit'      => array
         (
-            'type'      => 'varchar-15',
+            'type'      => 'float-11',
             'name'      => '收益-区域内门店利润百分比,这里直接输入数字即可,如输入10,就是10%',
             'default'   => '0',
             'desc'      => '收益',
-            'match'     => 'is_string',
-            'update'    => Dever::input('area') > 0 ? 'text' : false,
+            'match'     => 'is_numeric',
+            'update'    => 'text',
             'show'		=> 'type=2',
         ),
 
         'isbuy'        => array
         (
             'type'      => 'tinyint-1',
-            'name'      => '用户可购买-是否允许用户购买',
+            'name'      => '是否可购买-是否允许购买',
             'default'   => '1',
-            'desc'      => '用户可升级',
+            'desc'      => '是否可购买',
             'match'     => 'is_numeric',
-            //'update'      => 'radio',
+            'update'      => 'radio',
             'option'    => $yes,
+            'list'      => true,
         ),
 
         'levelup'        => array
         (
             'type'      => 'tinyint-1',
-            'name'      => '用户可升级-如果用户买了该角色,该角色是否可以升级',
+            'name'      => '是否可升级-该角色是否可以升级',
             'default'   => '1',
-            'desc'      => '用户可升级',
+            'desc'      => '是否可升级',
             'match'     => 'is_numeric',
-            //'update'  	=> 'radio',
+            'update'  	=> 'radio',
             'option'    => $yes,
+            'list'      => true,
         ),
 
         'state'     => array
@@ -182,17 +184,17 @@ return array
 
     'default' => array
 	(
-		'col' => 'id,name,short_name,`desc`,type,area,isbuy,levelup,profit,state,cdate',
+		'col' => 'id,name,short_name,`desc`,type,area,isbuy,levelup,profit,price,state,cdate',
 		'value' => array
 		(
-			'1,"普通用户", "用户", "注册但未注册成功代理商角色的用户", 1, 1, 2, 2, "0", 1,' . DEVER_TIME,
-            '2,"城市代理商", "城市", "一个城市代理商,有一二三线城市的区分。获得区域内门店利润1%收益。", 2, 1, 1, 2, "1", 1,' . DEVER_TIME,
-            '3,"区县代理商", "区县", "一线城市的区,与二三线城市的县级代理商。获得区域内门店利润3%收益。", 2, 2, 1, 1, "3", 1,' . DEVER_TIME,
-			'4,"街道代理商", "街道", "一个街道区域的代理商。获得区域内门店利润5%收益。", 2, 3, 1, 1, "5", 1,' . DEVER_TIME,
+			'1,"普通用户", "用户", "注册但未注册成功代理商角色的用户", 1, 1, 2, 2, "0", "0", 1,' . DEVER_TIME,
+            '2,"城市代理商", "城市", "一个城市代理商,有一二三线城市的区分。获得区域内门店利润1%收益。", 2, 1, 1, 2, "1", "0", 1,' . DEVER_TIME,
+            '3,"区县代理商", "区县", "一线城市的区,与二三线城市的县级代理商。获得区域内门店利润3%收益。", 2, 2, 1, 1, "3", "0", 1,' . DEVER_TIME,
+			'4,"街道代理商", "街道", "一个街道区域的代理商。获得区域内门店利润5%收益。", 2, 3, 1, 1, "5", "0", 1,' . DEVER_TIME,
 			
-			'5,"创服代理商", "创服", "在开创本系统时的一个代理商角色,以后此角色不新增,要保留,因为其中还有一些权益未兑换。", 3, 1, 2, 1, "0", 1,' . DEVER_TIME,
-			'6,"创客会员", "创客", "有分销能力的会员,但不产生代理商收益。", 1, 1, 1, 2, "5000", 1,' . DEVER_TIME,
-			'7,"消客会员", "消客", "能带动产品销售量的会员。", 1, 1, 1, 2, "2000", 1,' . DEVER_TIME,
+			'5,"创服代理商", "创服", "在开创本系统时的一个代理商角色,以后此角色不新增,要保留,因为其中还有一些权益未兑换。", 3, 1, 2, 1, "0", "0", 1,' . DEVER_TIME,
+			'6,"创客会员", "创客", "有分销能力的会员,但不产生代理商收益。", 1, 1, 1, 2, "0", "5000", 1,' . DEVER_TIME,
+			'7,"消客会员", "消客", "能带动产品销售量的会员。", 1, 1, 1, 2, "0", "2000", 1,' . DEVER_TIME,
 		),
 	),