dever 3 years ago
parent
commit
bba64065d7

+ 2 - 2
app/goods/database/info.php

@@ -375,7 +375,7 @@ $config = array
             'name'      => '封面图-图片尺寸300*300px或等比尺寸,上传大小不能超过2M,支持JPG、PNG、GIF格式,建议上传JPG格式,用户上传图片之后会自动进行居中裁剪',
             'default'   => '',
             'desc'      => '封面图',
-            'match'     => 'option',
+            'match'     => 'is_string',
             'update'    => 'image',
             'key'       => '1',
             'place'     => '300*300',
@@ -404,7 +404,7 @@ $config = array
             'name'      => '多张图片-图片尺寸759*562px或等比尺寸,上传大小不能超过2M,支持JPG、PNG、GIF格式,建议上传JPG格式,用户上传图片之后会自动进行居中裁剪',
             'default'   => '',
             'desc'      => '多张图片',
-            'match'     => 'option',
+            'match'     => 'is_string',
             'update'    => 'images',
             'key'       => '1',
             'place'     => '759*562',

+ 2 - 1
app/mshop/src/Main.php

@@ -34,7 +34,8 @@ class Main
             $this->data['shop'] = array();
             $this->data['shop_id'] = false;
             foreach ($user as $k => $v) {
-                $shop = Dever::db('shop/info')->getOne($v['shop_id']);
+                //$shop = Dever::db('shop/info')->getOne($v['shop_id']);
+                $shop = Dever::db('shop/info')->find($v['shop_id']);
                 if ($shop) {
                     $this->data['shop'][] = $shop;
                     $this->data['shop_id'] = $v['shop_id'];

+ 15 - 4
service/agent/database/dh_order.php

@@ -137,6 +137,17 @@ return array
             'option'    => $type,
         ),
 
+        'type_id'      => array
+        (
+            'type'      => 'int-11',
+            'name'      => '类型id',
+            'default'   => '-1',
+            'desc'      => '类型id',
+            'match'     => 'is_numeric',
+            'list_name' => '权益名称',
+            //'list'      => 'Dever::load("agent/lib/manage.getGoods#name", "{type}", "{type_id}", "-2")',
+        ),
+
         'dh_type'        => array
         (
             'type'      => 'tinyint-1',
@@ -329,13 +340,13 @@ return array
         'list_button' => array
         (
             //fast_list
-            'list' => array('查看详情', '"dh_order_goods&project=agent&order_id={id}&page_type=1"'),
+            'list' => array('查看详情', '"dh_order_goods&project=agent&order_id={id}&page_type=1"', '{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'),
+            '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"', '{type} == 1 && {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'),
+            'fast' => array('审核', '"dh_order&where_id={id}&col=audit,audit_desc&oper_save_jump=dh_order&oper_table=dh_order&oper_parent=dh_order"', '{type} == 1 && {status} == 2'),
 
-            'oper'  => array('确认收货', '"agent/lib/manage.setDhOrderStatus?mid={mid}&order_id={id}"', '{status} == 4'),
+            'oper'  => array('确认收货', '"agent/lib/manage.setDhOrderStatus?mid={mid}&order_id={id}"', '{type} == 1 && {status} == 4'),
         ),
     ),
 

+ 114 - 0
service/agent/database/member_goods.php

@@ -176,11 +176,125 @@ return array
             (
                 'mid' => 'yes',
                 'type' => 'yes',
+                'type_id' => 'yes',
+                'sku_id' => 'yes',
                 'state' => 1,
             ),
             'order' => array('type' => 'asc', 'id' => 'desc'),
             'type' => 'all',
             'col' => '*, total_num-sell_num as num',
         ),
+
+        'getOne' => array
+        (
+            # 匹配的正则或函数 选填项
+            'option' => array
+            (
+                'mid' => 'yes',
+                'type' => 'yes',
+                'type_id' => 'yes',
+                'sku_id' => 'yes',
+                'state' => 1,
+            ),
+            'type' => 'one',
+            'col' => '*, total_num-sell_num as num',
+        ),
+
+        'findData' => array
+        (
+            # 匹配的正则或函数 选填项
+            'where' => array
+            (
+                'mid' => 'yes',
+                'type' => 'yes',
+                'type_id' => 'yes',
+                'sku_id' => 'yes',
+                'state' => 1,
+            ),
+            'type' => 'one',
+            'col' => '*, total_num-sell_num as num',
+        ),
+
+        # 更新售出量
+        'incSell' => array
+        (
+            'type' => 'update',
+            'where' => array
+            (
+                'mid' => 'yes',
+                'type' => 'yes',
+                'type_id' => 'yes',
+                'sku_id' => 'yes',
+            ),
+            'set' => array
+            (
+                'sell_num' => array('yes', '+='),
+            ),
+        ),
+
+        # 减少售出量
+        'decSell' => array
+        (
+            'type' => 'update',
+            'where' => array
+            (
+                'mid' => 'yes',
+                'type' => 'yes',
+                'type_id' => 'yes',
+                'sku_id' => 'yes',
+            ),
+            'set' => array
+            (
+                'sell_num' => array('yes', '-='),
+            ),
+        ),
+
+        # 更新总库存
+        'updateTotal' => array
+        (
+            'type' => 'update',
+            'where' => array
+            (
+                'id' => 'yes',
+            ),
+            'set' => array
+            (
+                'total_num' => array('yes', '+='),
+            ),
+        ),
+
+        # 增加总库存
+        'incTotal' => array
+        (
+            'type' => 'update',
+            'where' => array
+            (
+                'mid' => 'yes',
+                'type' => 'yes',
+                'type_id' => 'yes',
+                'sku_id' => 'yes',
+            ),
+            'set' => array
+            (
+                'total_num' => array('yes', '+='),
+            ),
+        ),
+
+        # 减少总库存
+        'decTotal' => array
+        (
+            'type' => 'update',
+            'where' => array
+            (
+                'mid' => 'yes',
+                'type' => 'yes',
+                'type_id' => 'yes',
+                'sku_id' => 'yes',
+            ),
+            'set' => array
+            (
+                'total_num' => array('yes', '-='),
+            ),
+        ),
     ),
 );

+ 111 - 0
service/agent/database/member_prize.php

@@ -0,0 +1,111 @@
+<?php
+
+$prize = function()
+{
+    $array = array();
+    $data = Dever::load('setting/prize-state');
+    if($data)
+    {
+        $array += $data;
+    }
+    return $array;
+};
+
+return array
+(
+    # 表名
+    'name' => 'member_prize',
+    # 显示给用户看的名称
+    'lang' => '代理直推额外奖励赠送记录',
+    'menu' => false,
+    # 数据结构
+    '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_id'      => array
+        (
+            'type'      => 'int-11',
+            'name'      => '订单表id',
+            'default'   => '',
+            'desc'      => '订单表id',
+            'match'     => 'is_numeric',
+        ),
+
+        'prize_id'      => array
+        (
+            'type'      => 'int-11',
+            'name'      => '奖励的名额',
+            'default'   => '',
+            'desc'      => '奖励的名额',
+            'match'     => 'is_numeric',
+        ),
+
+        'child_num'      => array
+        (
+            'type'      => 'int-11',
+            'name'      => '直推数量',
+            'default'   => '',
+            'desc'      => '订单表id',
+            'match'     => 'is_numeric',
+        ),
+
+        '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
+    (
+        
+    ),
+);

+ 9 - 0
service/agent/database/order_cash.php

@@ -91,6 +91,15 @@ return array
             'list'      => true,
         ),
 
+        'prize_id'      => array
+        (
+            'type'      => 'int-11',
+            'name'      => '奖励的名额',
+            'default'   => '-1',
+            'desc'      => '奖励的名额',
+            'match'     => 'is_numeric',
+        ),
+
         'state'     => array
         (
             'type'      => 'tinyint-1',

+ 18 - 0
service/agent/database/order_process.php

@@ -36,6 +36,11 @@ if ($status_value == 1) {
 } elseif ($status_value == 2) {
     $audit_desc = '现行确认是否已到账,未确认到账时,无法发放权益等操作。';
 }
+$prize_type = array
+(
+    1 => '非赠送区域',
+    2 => '赠送区域,会自动扣减已有名额',
+);
 
 return array
 (
@@ -104,6 +109,18 @@ return array
             'control'   => 'status',
         ),
 
+        'prize_type'      => array
+        (
+            'type'      => 'tinyint-1',
+            'name'      => '是否赠送区域-当出现此选项时,代表代理商有免费赠送的区域名额,当选择赠送区域时,会自动扣减当前代理商已有的名额,并且会将实付金额强制改为0元',
+            'default'   => '1',
+            'desc'      => '是否赠送区域',
+            'match'     => 'is_numeric',
+            'update'    => 'radio',
+            'option'    => $prize_type,
+            'control'   => 'prize_type',
+        ),
+
         'price'      => array
         (
             'type'      => 'float-11,2',
@@ -114,6 +131,7 @@ return array
             'update'    => 'text',
             'value'     => Dever::input('price'),
             'list'      => true,
+            'show'      => 'prize_type=1',
         ),
 
         'cstatus'        => array

+ 47 - 16
service/agent/lib/Dhorder.php

@@ -266,17 +266,19 @@ class Dhorder
             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);
+        if ($goods) {
+            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);
+                }
             }
         }
 
@@ -341,11 +343,36 @@ class Dhorder
     # 减少库存,增加销量
     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);
+        if ($order['type'] == 1) {
+            $where['order_id'] = $order['id'];
+            $where['status'] = 1;
+            $data = Dever::db('agent/dh_order_goods')->select($where);
+            if ($data) {
+
+                foreach ($data as $k => $v) {
+
+                    $up['where_mid'] = $order['mid'];
+                    $up['where_type'] = $v['type'];
+                    $up['where_type_id'] = $v['type_id'];
+                    $up['where_sku_id'] = $v['sku_id'];
+
+                    $info = Dever::db('agent/member_goods')->findData($up);
+
+                    $up['set_sell_num'] = $v['num'];
+                    Dever::db('agent/member_goods')->incSell($up);
+                    Dever::load('agent/lib/member_set')->log($up['where_mid'], '', $up['where_type'], $up['where_type_id'], $up['where_sku_id'], $up['set_sell_num'], $info['num'], $info['num']-$up['set_sell_num'], '购买商品');
+                }
+            }
+        } elseif ($order['type'] == 3) {
+            $up['where_mid'] = $order['mid'];
+            $up['where_type'] = $order['type'];
+            $up['where_type_id'] = $order['type_id'];
+            $up['where_sku_id'] = -1;
+            $info = Dever::db('agent/member_goods')->findData($up);
+            $up['set_sell_num'] = $order['num'];
+            Dever::db('agent/member_goods')->incSell($up);
+
+            Dever::load('agent/lib/member_set')->log($up['where_mid'], '', $up['where_type'], $up['where_type_id'], $up['where_sku_id'], $up['set_sell_num'], $info['num'], $info['num']-$up['set_sell_num'], '兑换名额');
         }
     }
 
@@ -412,6 +439,10 @@ class Dhorder
 
         $info = Dever::db('agent/dh_order')->one($id);
 
+        if ($info['type'] > 1) {
+            return;
+        }
+
         $tk_status = Dever::db('agent/dh_order_refund')->config['status'];
         $tk_process = Dever::db('agent/dh_order_refund')->config['process'];
 

+ 71 - 23
service/agent/lib/Manage.php

@@ -11,6 +11,7 @@ class Manage
         Dever::config('base')->hook = true;
         $audit = Dever::param('audit', $data);
         $status = Dever::param('status', $data);
+        $desc = Dever::param('desc', $data);
         $order_id = Dever::param('order_id', $data);
         if ($order_id && $status) {
             if ($status < 3) {
@@ -18,8 +19,22 @@ class Manage
                     $update = array('where_id' => $order_id, 'status' => $status+1);
                     if ($status == 2) {
                         $order = Dever::db('agent/order')->find($order_id);
-
                         $price = Dever::param('price', $data);
+                        $prize_type = Dever::param('prize_type', $data);
+                        if ($prize_type == 2) {
+                            # 扣减已有名额,判断一下
+                            $prize = Dever::db('setting/prize')->find(array('type' => 1, 'price' => $order['price']));
+                            if ($prize) {
+                                $member_goods = Dever::db('agent/member_goods')->getOne(array('mid' => $order['mid'], 'type' => 3, 'type_id' => $prize['id']));
+                                if ($member_goods && $member_goods['num'] > 0) {
+                                    # 有名额
+                                    $price = 0;
+                                    # 开始扣减
+                                    $member = Dever::db('agent/member')->find($order['mid']);
+                                    Dever::load('agent/lib/dhorder')->action($member, $prize['name'], $prize['num'], $prize['price'], array(), -1, 2, 3, $desc);
+                                }
+                            }
+                        }
                         if ($price <= 0) {
                             $update['get_type'] = 2;
                         } else {
@@ -190,6 +205,7 @@ class Manage
         }
     }
 
+    # 设置多个权益
     private function setGoods($order)
     {
         $goods = Dever::db('agent/order_goods')->getData(array('order_id' => $order['id']));
@@ -200,28 +216,34 @@ class Manage
         if ($goods) {
             $where = array();
             foreach ($goods as $k => $v) {
-                $where['mid'] = $order['mid'];
-                $where['type'] = $v['type'];
-                $where['type_id'] = $v['type_id'];
-                $where['sku_id'] = $v['sku_id'];
-                $info = Dever::db('agent/member_goods')->find($where);
-                if ($info) {
-                    $up['where_id'] = $info['id'];
-                    $up['total_num'] = $info['total_num'] + $v['num'];
-                    $state = Dever::db('agent/member_goods')->update($up);
-
-                    if ($state) {
-                        Dever::load('agent/lib/member_set')->log($order['mid'], $order['order_num'], $v['type'], $v['type_id'], $v['sku_id'], $v['num'], $info['total_num'], $up['total_num']);
-                    }
-                    
-                } else {
-                    $up = $where;
-                    $up['total_num'] = $v['num'];
-                    $state = Dever::db('agent/member_goods')->insert($up);
-                    if ($state) {
-                        Dever::load('agent/lib/member_set')->log($order['mid'], $order['order_num'], $v['type'], $v['type_id'], $v['sku_id'], $v['num'], 0, $up['total_num']);
-                    }
-                }
+                $this->addGoods($order, $v);
+            }
+        }
+    }
+
+    # 新增权益
+    private function addGoods($order, $v)
+    {
+        $where['mid'] = $order['mid'];
+        $where['type'] = $v['type'];
+        $where['type_id'] = $v['type_id'];
+        $where['sku_id'] = $v['sku_id'];
+        $info = Dever::db('agent/member_goods')->find($where);
+        if ($info) {
+            $up['where_id'] = $info['id'];
+            $up['total_num'] = $info['total_num'] + $v['num'];
+            $state = Dever::db('agent/member_goods')->update($up);
+
+            if ($state) {
+                Dever::load('agent/lib/member_set')->log($order['mid'], $order['order_num'], $v['type'], $v['type_id'], $v['sku_id'], $v['num'], $info['total_num'], $up['total_num']);
+            }
+            
+        } else {
+            $up = $where;
+            $up['total_num'] = $v['num'];
+            $state = Dever::db('agent/member_goods')->insert($up);
+            if ($state) {
+                Dever::load('agent/lib/member_set')->log($order['mid'], $order['order_num'], $v['type'], $v['type_id'], $v['sku_id'], $v['num'], 0, $up['total_num']);
             }
         }
     }
@@ -242,14 +264,37 @@ class Manage
                     $insert = $where;
                     $insert['cash'] = $t[3];
                     $insert['per'] = $t[5];
+                    if (isset($t[6])) {
+                        $insert['prize_id'] = $t[6];
+                    }
                     Dever::db('agent/order_cash')->insert($insert);
                 } else {
                     $update['where_id'] = $info['id'];
                     $update['cash'] = $t[3];
                     $update['per'] = $t[5];
+                    if (isset($t[6])) {
+                        $update['prize_id'] = $t[6];
+                    }
                     Dever::db('agent/order_cash')->update($update);
                 }
 
+                if (isset($t[6]) && isset($t[7])) {
+                    $prize_info = Dever::db('setting/prize')->find($t[6]);
+                    if ($prize_info) {
+                        $prize_insert['order_id'] = $order['order_id'];
+                        $prize_insert['mid'] = $t[2];
+                        $prize_insert['child_num'] = $t[7];
+                        $prize_insert['prize_id'] = $prize_info['id'];
+                        Dever::db('agent/member_prize')->insert($prize_insert);
+
+                        $prize['type'] = 3;
+                        $prize['type_id'] = $prize_info['id'];
+                        $prize['sku_id'] = -1;
+                        $prize['num'] = $prize_info['num'];
+                        $this->addGoods($order, $prize);
+                    }
+                }
+
                 $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);
@@ -297,6 +342,9 @@ class Manage
     public function getGoods($type, $type_id, $sku_id)
     {
         if ($type == 1) {
+            if ($sku_id == -2) {
+                return '商品';
+            }
             $goods_info = Dever::load('goods/lib/info')->getInfoBySku($type_id, $sku_id);
             if (isset($goods_info['sku'])) {
                 $sku = '-' . $goods_info['sku']['string'];

+ 2 - 64
service/agent/lib/Member_set.php

@@ -15,70 +15,8 @@ class Member_set
     # 获取商品列表
     public function goods_api()
     {
-        $mid = Dever::input('mid');
-        $col = 'mid';
-        $table = 'agent/member_goods';
-        $value = $mid;
-
-        $data = array();
-
-        /*
-        $prize = Dever::db('setting/role_goods')->config['set']['prize'];
-
-        $data[0]['id'] = -1;
-        $data[0]['name'] = '名额';
-        $data[0]['price'] = 0;
-        $data[0]['price_type'] = 2;
-        $data[0]['select'] = 2;
-        $data[0]['del'] = 1;
-        $data[0]['total'] = 0;
-        foreach ($prize as $k => $v) {
-            $data[0]['children'][$k-1]['id'] = $k . '_3';
-            $data[0]['children'][$k-1]['name'] = $v;
-            $data[0]['children'][$k-1]['price'] = 0;
-            $data[0]['children'][$k-1]['price_type'] = 2;
-            $data[0]['children'][$k-1]['select'] = 2;
-            $data[0]['children'][$k-1]['del'] = 1;
-            $data[0]['children'][$k-1]['total'] = 0;
-            $data[0]['children'][$k-1]['end'] = true;
-
-            $info = Dever::db($table)->find(array('type' => 3, 'type_id' => $k, $col => $value));
-            if ($info) {
-                $data[0]['children'][$k-1]['select'] = 1;
-                $data[0]['children'][$k-1]['total'] = $info['num'];
-            }
-        }
-
-        $card = Dever::db('card/info')->select(array('status' => 1));
-        if ($card) {
-            $data[1]['id'] = -2;
-            $data[1]['name'] = '厨人E卡';
-            $data[1]['price'] = 0;
-            $data[1]['price_type'] = 2;
-            $data[1]['select'] = 2;
-            $data[1]['del'] = 1;
-            $data[1]['total'] = 0;
-            foreach ($card as $k => $v) {
-                $data[1]['children'][$k]['id'] = $v['id'] . '_2';
-                $data[1]['children'][$k]['name'] = $v['name'];
-                $data[1]['children'][$k]['price'] = $v['price'];
-                $data[1]['children'][$k]['price_type'] = 2;
-                $data[1]['children'][$k]['select'] = 2;
-                $data[1]['children'][$k]['del'] = 1;
-                $data[1]['children'][$k]['total'] = 0;
-                $data[1]['children'][$k]['end'] = true;
-
-                $info = Dever::db($table)->find(array('type' => 2, 'type_id' => $k, $col => $value));
-                if ($info) {
-                    $data[1]['children'][$k]['select'] = 1;
-                    $data[1]['children'][$k]['total'] = $info['num'];
-                }
-            }
-        }*/
-
-        $data = array_merge($data, Dever::load('goods/lib/set.getGoodsList', $value, $col, $table, 'type_id'));
-
-        return Dever::outDiy($data);
+        $id = Dever::input('mid');
+        return Dever::load('agent/lib/set')->getData($id);
     }
 
     # 设置商品

+ 62 - 6
service/agent/lib/Order.php

@@ -477,6 +477,15 @@ class Order
                 'name' => '业务初审',
             );
         } elseif ($info['status'] == 2) {
+            # 根据价值获取名额
+            $prize = Dever::db('setting/prize')->find(array('type' => 1, 'price' => $info['price']));
+            if ($prize) {
+                $member_goods = Dever::db('agent/member_goods')->getOne(array('mid' => $info['mid'], 'type' => 3, 'type_id' => $prize['id']));
+                if ($member_goods && $member_goods['num'] > 0) {
+                    # 有名额
+                    $cstatus = ',prize_type';
+                }
+            }
             $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'];
@@ -521,6 +530,7 @@ class Order
                 foreach ($parents as $k => $v) {
                     $parent_info = Dever::db('agent/member')->find($v['uid']);
                     if ($parent_info && $parent_info['status'] == 2) {
+                        $child_num = 0;
                         $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']);
@@ -552,9 +562,9 @@ class Order
                             }
 
                             # 获取直推人数
-                            $parent_num = Dever::load('invite/api')->getChildNum($v['uid'], 1) + 1;
+                            $child_num = Dever::load('invite/api')->getChildNum($v['uid'], 1) + 1;
 
-                            if ($parent_num >= $parent_level['num']) {
+                            if ($child_num >= $parent_level['num']) {
                                 # 达到要求,开始团队分润
                                 if ($parent_per > 0) {
                                     $parent_level['value'] = $parent_level['value'] - $parent_per;
@@ -573,21 +583,67 @@ class Order
                             if (!$order_cash) {
                                 $reward = Dever::db('setting/role_reward')->find(array('role_id' => $parent_info['role'], 't_role_id' => $info['role']));
                                 if ($reward) {
+                                    $zcash = 0;
+                                    $zper = 0;
                                     if ($reward['num'] == 1) {
+                                        # 每推荐1个,获取直推佣金
                                         if ($reward['value_type'] == 1) {
                                             $zcash = $info['agent_cash'] * ($reward['value']/100);
-                                            $per = $reward['value'];
+                                            $zper = $reward['value'];
                                         } else {
                                             $zcash = $reward['value'];
-                                            $per = 0;
+                                            $zper = 0;
+                                        }
+                                    } elseif ($reward['num'] > 1) {
+                                        # 每推荐多少个,获取直推佣金
+                                        if (!$child_num) {
+                                            $child_num = Dever::load('invite/api')->getChildNum($v['uid'], 1) + 1;
+                                        }
+                                        if ($child_num > $reward['num'] && $child_num % $reward['num'] == 0) {
+                                                $zcash = $reward['value'];
+                                                $zper = 0;
+                                        }
+                                    }
+                                    if ($reward['is_give'] == 1) {
+                                        $give = Dever::array_decode($reward['give']);
+                                        if (!$child_num) {
+                                            $child_num = Dever::load('invite/api')->getChildNum($v['uid'], 1) + 1;
+                                        }
+                                        foreach ($give as $gv) {
+                                            if (isset($gv['num']) && $child_num > $gv['num'] && $child_num % $gv['num'] == 0) {
+                                                $prize_log = Dever::db('agent/member_prize')->find(array('mid' => $v['uid'], 'prize_id' => $gv['type'], 'child_num' => $child_num));
+                                                if (!$prize_log) {
+                                                    $prize = Dever::db('setting/prize')->find($gv['type']);
+                                                    $zper .= '-' . $prize['id'] . '-' . $child_num;
+                                                    break;
+                                                }
+                                            }
                                         }
+                                    }
 
-                                        $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>元';
+                                    if ($zcash > 0) {
+                                        if (isset($prize)) {
+                                            $parent_name .= '&nbsp;&nbsp;赠送名额:'.$prize['name'];
+                                        }
+                                        if ($zper > 0) {
+                                            $parent_name .= '&nbsp;&nbsp;直推佣金比例:'.$zper.'%';
+                                        }
+                                        $parent_name .= '&nbsp;&nbsp;直推佣金:<a style="color:blue" class="set_cash" data-param="1-'.$info['id'].'-'.$parent_info['id'].'-'.$zcash.'-'.$parent_level['id'].'-'.$zper.'">' . $zcash . '</a>元';
                                     }
                                 }
                             } else {
                                 $zcash = $order_cash['cash'];
-                                $parent_name .= '&nbsp;&nbsp;直推佣金比例:'.$order_cash['per'].'%&nbsp;&nbsp;直推佣金:<a style="color:blue">' . $zcash . '</a>元';
+                                if ($order_cash['prize_id'] && $order_cash['prize_id'] > 0) {
+                                    $prize = Dever::db('setting/prize')->find($order_cash['prize_id']);
+                                    if ($prize) {
+                                        $zper .= '-' . $prize['id'];
+                                        $parent_name .= '&nbsp;&nbsp;赠送名额:'.$prize['name'];
+                                    }
+                                }
+                                if ($order_cash['per'] > 0) {
+                                    $parent_name .= '&nbsp;&nbsp;直推佣金比例:'.$order_cash['per'].'%';
+                                }
+                                $parent_name .= '&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'].'-'.$parent_level['value'].'">' . $cash . '</a>';

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

@@ -16,78 +16,7 @@ class Order_set
     public function goods_api()
     {
         $id = Dever::input('role_id', 1);
-        $order_id = Dever::input('order_id');
-        $check = Dever::db('agent/order_goods')->find(array('order_id' => $order_id));
-
-        if ($check) {
-            $col = 'order_id';
-            $table = 'agent/order_goods';
-            $value = $order_id;
-        } else {
-            $col = 'role_id';
-            $table = 'setting/role_goods';
-            $value = $id;
-        }
-
-        $data = array();
-
-        /*
-        $prize = Dever::db('setting/role_goods')->config['set']['prize'];
-
-        $data[0]['id'] = -1;
-        $data[0]['name'] = '名额';
-        $data[0]['price'] = 0;
-        $data[0]['price_type'] = 2;
-        $data[0]['select'] = 2;
-        $data[0]['del'] = 1;
-        $data[0]['total'] = 0;
-        foreach ($prize as $k => $v) {
-            $data[0]['children'][$k-1]['id'] = $k . '_3';
-            $data[0]['children'][$k-1]['name'] = $v;
-            $data[0]['children'][$k-1]['price'] = 0;
-            $data[0]['children'][$k-1]['price_type'] = 2;
-            $data[0]['children'][$k-1]['select'] = 2;
-            $data[0]['children'][$k-1]['del'] = 1;
-            $data[0]['children'][$k-1]['total'] = 0;
-            $data[0]['children'][$k-1]['end'] = true;
-
-            $info = Dever::db($table)->find(array('type' => 3, 'type_id' => $k, $col => $value));
-            if ($info) {
-                $data[0]['children'][$k-1]['select'] = 1;
-                $data[0]['children'][$k-1]['total'] = $info['num'];
-            }
-        }
-
-        $card = Dever::db('card/info')->select(array('status' => 1));
-        if ($card) {
-            $data[1]['id'] = -2;
-            $data[1]['name'] = '厨人E卡';
-            $data[1]['price'] = 0;
-            $data[1]['price_type'] = 2;
-            $data[1]['select'] = 2;
-            $data[1]['del'] = 1;
-            $data[1]['total'] = 0;
-            foreach ($card as $k => $v) {
-                $data[1]['children'][$k]['id'] = $v['id'] . '_2';
-                $data[1]['children'][$k]['name'] = $v['name'];
-                $data[1]['children'][$k]['price'] = $v['price'];
-                $data[1]['children'][$k]['price_type'] = 2;
-                $data[1]['children'][$k]['select'] = 2;
-                $data[1]['children'][$k]['del'] = 1;
-                $data[1]['children'][$k]['total'] = 0;
-                $data[1]['children'][$k]['end'] = true;
-
-                $info = Dever::db($table)->find(array('type' => 2, 'type_id' => $k, $col => $value));
-                if ($info) {
-                    $data[1]['children'][$k]['select'] = 1;
-                    $data[1]['children'][$k]['total'] = $info['num'];
-                }
-            }
-        }*/
-
-        $data = array_merge($data, Dever::load('goods/lib/set.getGoodsList', $value, $col, $table, 'type_id'));
-
-        return Dever::outDiy($data);
+        return Dever::load('agent/lib/set')->getData($id);
     }
 
     # 设置商品

+ 43 - 16
service/agent/lib/Set.php

@@ -12,14 +12,33 @@ class Set
         Dever::load('manage/auth.init');
     }
 
-    # 获取商品列表
-    public function goods_api()
+    # 获取名额和体验卡
+    public function getData($id)
     {
-        $id = Dever::input('id', 1);
+        $order_id = Dever::input('order_id');
+        $mid = Dever::input('mid');
+
+        $col = 'role_id';
+        $table = 'setting/role_goods';
+        $value = $id;
+
+        if ($mid) {
+            $col = 'mid';
+            $table = 'agent/member_goods';
+            $value = $mid;
+        } elseif ($order_id) {
+            $check = Dever::db('agent/order_goods')->find(array('order_id' => $order_id));
+            if ($check) {
+                $col = 'order_id';
+                $table = 'agent/order_goods';
+                $value = $order_id;
+            }
+        }
+
         $data = array();
 
         /*
-        $prize = Dever::db('setting/role_goods')->config['set']['prize'];
+        $prize = Dever::db('setting/prize')->select();
 
         $data[0]['id'] = -1;
         $data[0]['name'] = '名额';
@@ -29,16 +48,16 @@ class Set
         $data[0]['del'] = 1;
         $data[0]['total'] = 0;
         foreach ($prize as $k => $v) {
-            $data[0]['children'][$k-1]['id'] = $k . '_3';
-            $data[0]['children'][$k-1]['name'] = $v;
-            $data[0]['children'][$k-1]['price'] = 0;
-            $data[0]['children'][$k-1]['price_type'] = 2;
-            $data[0]['children'][$k-1]['select'] = 2;
-            $data[0]['children'][$k-1]['del'] = 1;
-            $data[0]['children'][$k-1]['total'] = 0;
-            $data[0]['children'][$k-1]['end'] = true;
-
-            $info = Dever::db('setting/role_goods')->find(array('type' => 3, 'type_id' => $k, 'role_id' => $id));
+            $data[1]['children'][$k]['id'] = $v['id'] . '_3';
+            $data[1]['children'][$k]['name'] = $v['name'];
+            $data[1]['children'][$k]['price'] = $v['price'];
+            $data[1]['children'][$k]['price_type'] = 2;
+            $data[1]['children'][$k]['select'] = 2;
+            $data[1]['children'][$k]['del'] = 1;
+            $data[1]['children'][$k]['total'] = 0;
+            $data[1]['children'][$k]['end'] = true;
+
+            $info = Dever::db($table)->find(array('type' => 3, 'type_id' => $k, $col => $value));
             if ($info) {
                 $data[0]['children'][$k-1]['select'] = 1;
                 $data[0]['children'][$k-1]['total'] = $info['num'];
@@ -64,7 +83,7 @@ class Set
                 $data[1]['children'][$k]['total'] = 0;
                 $data[1]['children'][$k]['end'] = true;
 
-                $info = Dever::db('setting/role_goods')->find(array('type' => 2, 'type_id' => $v['id'], 'role_id' => $id));
+                $info = Dever::db($table)->find(array('type' => 2, 'type_id' => $k, $col => $value));
                 if ($info) {
                     $data[1]['children'][$k]['select'] = 1;
                     $data[1]['children'][$k]['total'] = $info['num'];
@@ -72,11 +91,19 @@ class Set
             }
         }
         */
-        $data = array_merge($data, Dever::load('goods/lib/set.getGoodsList', $id, 'role_id', 'setting/role_goods', 'type_id'));
+
+        $data = array_merge($data, Dever::load('goods/lib/set.getGoodsList', $value, $col, $table, 'type_id'));
 
         return Dever::outDiy($data);
     }
 
+    # 获取商品列表
+    public function goods_api()
+    {
+        $id = Dever::input('id', 1);
+        return $this->getData($id);
+    }
+
     # 设置商品
     public function home_api()
     {

+ 18 - 8
service/agent/src/My.php

@@ -134,9 +134,14 @@ class My extends Core
             $temp = explode(',', $this->data['user']['area']);
 
             # 如果当前是城市,只能升级为更高级的城市
+            $city = Dever::db('area/city')->find($temp[1]);
+            $level_info = array();
+            if ($city['level_id'] && $city['level_id'] > 0) {
+                $level_info = Dever::db('area/level')->find($city['level_id']);
+            }
+            
             if ($this->data['user']['role']['area'] == 1) {
-                $city = Dever::db('area/city')->find($temp[1]);
-                if ($city && $city['level_id'] == 1) {
+                if ($city && $level_info && $level_info['level'] == 1) {
                     $this->data['role'] = array();
                 } else {
                     $this->data['role'] = Dever::db('setting/role')->getInfo(array('isbuy' => 1, 'type' => 2, 'area' => 1));
@@ -145,18 +150,23 @@ class My extends Core
             # 如果当前是区县,可以升级为城市和更高级的区县
             if ($this->data['user']['role']['area'] == 2) {
                 $area = '1,2';
-                $county = Dever::db('area/county')->find($temp[2]);
-                if ($county && $county['level'] == 1) {
-                    $area = '1';
+                if ($city && $level_info && $level_info['level'] == 1) {
+                    $county = Dever::db('area/county')->find($temp[2]);
+                    if ($county && $county['level'] == 1) {
+                        $area = '1';
+                    }
                 }
                 $this->data['role'] = Dever::db('setting/role')->getInfo(array('isbuy' => 1, 'type' => 2, 'area' => $area));
             }
             # 如果当前是街道,都可以升级
             if ($this->data['user']['role']['area'] == 3) {
                 $area = '1,2,3';
-                $town = Dever::db('area/town')->find($temp[3]);
-                if ($town && $town['type'] == 3) {
-                    $area = '1,2';
+                if ($city && $level_info && $level_info['level'] == 1) {
+                    $county = Dever::db('area/county')->find($temp[2]);
+                    $town = Dever::db('area/town')->find($temp[3]);
+                    if ($county && $county['level'] == 1 && $town && $town['type'] != 1) {
+                        $area = '1,2';
+                    }
                 }
 
                 $this->data['role'] = Dever::db('setting/role')->getInfo(array('isbuy' => 1, 'type' => 2, 'area' => $area));

+ 150 - 0
service/setting/database/prize.php

@@ -0,0 +1,150 @@
+<?php
+$type = array
+(
+	1 => '街道',
+	//2 => '创客',
+	//3 => '九阳自动炒菜机套餐',
+);
+
+$level = function()
+{
+    $info = Dever::db('area/level')->select();
+    return $info;
+};
+
+return array
+(
+    # 表名
+    'name' => 'prize',
+    # 显示给用户看的名称
+    'lang' => '名额配置',
+    # 后台菜单排序
+    'order' => 1,
+    # 数据结构
+    'struct' => array
+    (
+        'id'        => array
+        (
+            'type'      => 'int-11',
+            'name'      => 'ID',
+            'default'   => '',
+            'desc'      => '',
+            'match'     => 'is_numeric',
+            'search'    => 'order',
+            'list'      => true,
+            'order'     => 'desc',
+        ),
+        
+        'name'      => array
+        (
+            'type'      => 'varchar-200',
+            'name'      => '名称',
+            'default'   => '',
+            'desc'      => '名称',
+            'match'     => 'is_string',
+            'update'    => 'text',
+            'search'    => 'fulltext',
+            'list'      => true,
+        ),
+
+        'desc'      => array
+        (
+            'type'      => 'varchar-500',
+            'name'      => '描述',
+            'default'   => '',
+            'desc'      => '描述',
+            'match'     => 'option',
+            'update'    => 'textarea',
+            //'search'    => 'fulltext',
+            //'list'      => true,
+        ),
+
+        'type'        => array
+        (
+            'type'      => 'tinyint-1',
+            'name'      => '名额类型',
+            'default'   => '1',
+            'desc'      => '名额类型',
+            'match'     => 'is_numeric',
+            'update'  	=> 'radio',
+            'option'    => $type,
+            'search'    => 'select',
+            'list'      => true,
+            'control'	=> 'type',
+        ),
+
+        'level'        => array
+        (
+            'type'      => 'int-11',
+            'name'      => '城市等级',
+            'default'   => '-1',
+            'desc'      => '城市等级',
+            'match'     => 'is_numeric',
+            //'update'  	=> 'radio',
+            'option'    => $level,
+            'show'		=> 'type=1',
+        ),
+
+        'price'      => array
+        (
+            'type'      => 'varchar-11',
+            'name'      => '价值-以元为单位,如输入40000,就是4万元,选择街道时,代表赠送价值4万元的街道',//,如果为空,则按照选择的城市等级赠送
+            'default'   => '0',
+            'desc'      => '价值',
+            'match'     => 'option',
+            'update'    => 'text',
+            'list'      => true,
+        ),
+
+        'num'      => array
+        (
+            'type'      => 'int-11',
+            'name'      => '数量',
+            'default'   => '1',
+            '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,
+            'list'      => 'date("Y-m-d H:i:s", {cdate})',
+        ),
+    ),
+
+    'manage' => array
+    (
+    	
+    ),
+
+    'request' => array
+    (
+        'getInfo' => array
+        (
+            # 匹配的正则或函数 选填项
+            'option' => array
+            (
+                'type' => array('yes', 'in'),
+                'state' => 1,
+            ),
+            'type' => 'all',
+            'col' => '*',
+        ),
+    ),
+);

+ 1 - 0
service/setting/database/role.php

@@ -27,6 +27,7 @@ return array
     'lang' => '代理商角色',
     # 后台菜单排序
     'order' => 2,
+    'config_type' => $type,
     # 数据结构
     'struct' => array
     (

+ 5 - 6
service/setting/database/role_goods.php

@@ -19,12 +19,11 @@ $type = array
     3 => '名额',
 );
 
-$prize = array
-(
-    1 => '九阳自动炒菜机套餐名额',
-    2 => '二级街道代理商名额',
-    3 => '60%分润创客名额',
-);
+$prize = function()
+{
+    $info = Dever::db('setting/prize')->select();
+    return $info;
+};
 
 return array
 (

+ 7 - 30
service/setting/database/role_reward.php

@@ -18,11 +18,11 @@ $is_give = array
 	2 => '否',
 );
 
-$type = array
-(
-	1 => '街道',
-	5 => '分润创客名额',
-);
+$prize = function()
+{
+    $info = Dever::db('setting/prize')->select();
+    return $info;
+};
 
 return array
 (
@@ -149,32 +149,9 @@ return array
                     'default'   => '1',
                     'desc'      => '奖励类型',
                     'match'     => 'is_string',
-                    'update'  	=> 'radio',
-            		'option'    => $type,
+                    'update'  	=> 'select',
+            		'option'    => $prize,
                 ),
-
-                array
-                (
-                    'col'       => 'value',
-                    'name'      => '奖励数值',
-                    'default'   => '0',
-                    'desc'      => '奖励数值',
-                    'match'     => 'is_string',
-                    'update'    => 'text',
-                ),
-
-                array
-                (
-                    'col'       => 'value_type',
-                    'name'      => '数值类型',
-                    'default'   => '1',
-                    'desc'      => '数值类型',
-                    'match'     => 'is_string',
-                    'update'  	=> 'radio',
-            		'option'    => $value_type,
-                ),
-
-                
             ),
         ),