dever 3 jaren geleden
bovenliggende
commit
9f8ea4184b

+ 41 - 2
service/agent/database/member.php

@@ -51,6 +51,7 @@ return array
     # 显示给用户看的名称
     'lang' => '代理商管理',
     'order' => 100,
+    'auto' => 1000000,
     # 数据结构
     'struct' => array
     (
@@ -271,13 +272,23 @@ return array
         'sell'      => array
         (
             'type'      => 'varchar-500',
-            'name'      => '销售业绩',
+            'name'      => '销售业绩-直推业绩',
             'default'   => '0',
             'desc'      => '销售业绩',
             'match'     => 'is_string',
             'update'    => 'text',
         ),
 
+        'group_sell'      => array
+        (
+            'type'      => 'varchar-500',
+            'name'      => '团队销售业绩',
+            'default'   => '0',
+            'desc'      => '团队销售业绩',
+            'match'     => 'is_string',
+            'update'    => 'text',
+        ),
+
         'status'        => array
         (
             'type'      => 'tinyint-1',
@@ -321,6 +332,34 @@ return array
 
     'request' => array
     (
-        
+        'upSell' => array
+        (
+            'type' => 'update',
+            'where' => array
+            (
+                'id' => 'yes',
+            ),
+            'set' => array
+            (
+                'cash' => array('yes', '+='),
+                'upcol' => array('yes-sell', '+='),
+                'level_id' => 'yes',
+            ),
+        ),
+
+        'upGroupSell' => array
+        (
+            'type' => 'update',
+            'where' => array
+            (
+                'id' => 'yes',
+            ),
+            'set' => array
+            (
+                'cash' => array('yes', '+='),
+                'upcol' => array('yes-group_sell', '+='),
+                'level_id' => 'yes',
+            ),
+        ),
     ),
 );

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

@@ -0,0 +1,149 @@
+<?php
+
+$role = function()
+{
+    $array = array();
+    $data = Dever::load('setting/role-state');
+    if($data)
+    {
+        $array += $data;
+    }
+    return $array;
+};
+
+$type = array
+(
+    1 => '购买',
+    2 => '赠送',
+);
+
+return array
+(
+    # 表名
+    'name' => 'member_area',
+    # 显示给用户看的名称
+    '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',
+        ),
+
+        'type'        => array
+        (
+            'type'      => 'tinyint-1',
+            'name'      => '类型',
+            'default'   => '1',
+            'desc'      => '类型',
+            'match'     => 'is_numeric',
+            'update'    => 'radio',
+            'option'    => $type,
+        ),
+
+        'role'      => array
+        (
+            'type'      => 'int-11',
+            'name'      => '代理角色',
+            'default'   => '',
+            'desc'      => '代理角色',
+            'match'     => 'is_numeric',
+            'search'    => 'select',
+            'update'    => 'checkbox',
+            'option'    => $role,
+            'list'      => true,
+        ),
+
+        'area'       => array
+        (
+            'type'      => 'varchar-500',
+            'name'      => '区域',
+            'default'   => '',
+            'desc'      => '区域',
+            'match'     => 'option',
+            'search'    => 'linkage',
+            'update'    => 'linkage',
+            'option'    => Dever::url('api.get?level_total=4', 'area'),
+            'list'      => 'Dever::load("area/api.string", "{area}")',
+        ),
+
+        '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,
+    ),
+
+    'request' => array
+    (
+        'getData' => array
+        (
+            # 匹配的正则或函数 选填项
+            'option' => array
+            (
+                'mid' => 'yes',
+                'state' => 1,
+            ),
+            'type' => 'all',
+            'order' => array('id' => 'desc'),
+            'col' => '*',
+        ),
+    ),
+);

+ 40 - 1
service/agent/database/order.php

@@ -47,6 +47,12 @@ $pay_type = array
     3 => '个人转账',
 );
 
+$get_type = array
+(
+    1 => '购买',
+    2 => '赠送',
+);
+
 $level = function()
 {
 	$array = array
@@ -362,6 +368,27 @@ return array
             'option'    => $pay_status,
         ),
 
+        'get_type'        => array
+        (
+            'type'      => 'tinyint-1',
+            'name'      => '获取方式',
+            'default'   => '1',
+            'desc'      => '获取方式',
+            'match'     => 'is_numeric',
+            'update'    => 'radio',
+            'option'    => $get_type,
+        ),
+
+        'soft_cash'      => array
+        (
+            'type'      => 'varchar-50',
+            'name'      => '代理费',
+            'default'   => '0',
+            'desc'      => '代理费',
+            'match'     => 'option',
+            'update'    => 'text',
+        ),
+
         'state'     => array
         (
             'type'      => 'tinyint-1',
@@ -411,6 +438,18 @@ return array
 
     'request' => array
     (
-        
+        'getData' => array
+        (
+            # 匹配的正则或函数 选填项
+            'option' => array
+            (
+                'status' => array('yes', 'in'),
+                'state' => 1,
+            ),
+            'order' => array('id' => 'desc'),
+            'page' => array(20, 'list'),
+            'type' => 'all',
+            'col' => '*',
+        ),
     ),
 );

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

@@ -0,0 +1,126 @@
+<?php
+
+$type = array
+(
+    1 => '直推佣金',
+    2 => '团队分润',
+);
+
+return array
+(
+    # 表名
+    'name' => 'order_cash',
+    # 显示给用户看的名称
+    'lang' => '分润信息',
+    'menu' => false,
+    # 数据结构
+    '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',
+        ),
+
+        'type'        => array
+        (
+            'type'      => 'tinyint-1',
+            'name'      => '类型',
+            'default'   => '1',
+            'desc'      => '类型',
+            'match'     => 'is_numeric',
+            'update'    => 'radio',
+            'option'    => $type,
+        ),
+
+        'mid'      => array
+        (
+            'type'      => 'int-11',
+            'name'      => '代理商',
+            'default'   => '-1',
+            'desc'      => '代理商',
+            'match'     => 'is_string',
+            'update'    => 'text',
+        ),
+
+        'parent_mid'      => array
+        (
+            'type'      => 'int-11',
+            'name'      => '上级代理商',
+            'default'   => '-1',
+            'desc'      => '代理商',
+            'match'     => 'is_string',
+            'update'    => 'text',
+        ),
+
+        'cash'      => array
+        (
+            'type'      => 'varchar-150',
+            'name'      => '金额',
+            'default'   => '0',
+            'desc'      => '金额',
+            'match'     => 'option',
+            '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
+    (
+        
+    ),
+
+    'request' => array
+    (
+        'getData' => array
+        (
+            # 匹配的正则或函数 选填项
+            'option' => array
+            (
+                'order_id' => 'yes',
+                'mid' => 'yes',
+                'type' => 'yes',
+                'state' => 1,
+            ),
+            'type' => 'one',
+            'col' => '*',
+        ),
+    ),
+);

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

@@ -23,6 +23,12 @@ $type = array
     5 => '代理合同已生成',
 );
 
+$get_type = array
+(
+    1 => '购买区域',
+    2 => '赠送区域',
+);
+
 $status_value = Dever::input('status', 1);
 $audit_desc = '';
 if ($status_value == 1) {
@@ -98,6 +104,18 @@ return array
             'control'   => 'status',
         ),
 
+        'get_type'        => array
+        (
+            'type'      => 'tinyint-1',
+            'name'      => '是否赠送区域',
+            'default'   => '1',
+            'desc'      => '是否赠送区域',
+            'match'     => 'is_numeric',
+            'update'    => 'radio',
+            'option'    => $get_type,
+            'show'      => 'type=2',
+        ),
+
         'desc'      => array
         (
             'type'      => 'varchar-400',

+ 123 - 46
service/agent/lib/Manage.php

@@ -13,40 +13,74 @@ class Manage
         $status = Dever::param('status', $data);
         $order_id = Dever::param('order_id', $data);
         if ($order_id && $status) {
-            if ($audit == 1) {
-                $update = array('where_id' => $order_id, 'status' => $status+1);
-                if ($status == 2) {
-                    $update['pay_status'] = 2;
-                    # 财务终审之后,先生成代理商
-                    $order = Dever::db('agent/order')->find($order_id);
-                    if ($order['mid'] <= 0) {
-                        # 生成
-                        $where['mobile'] = $order['mobile'];
-                        $member = Dever::db('agent/member')->find($where);
-                        if ($member) {
-                            $update['mid'] = $member['id'];
-                        } else {
-                            $data = $where;
-                            $data['name'] = $order['name'];
-                            $data['role'] = 1;
-                            $data['parent_mid'] = $order['parent_mid'];
-                            $update['mid'] = Dever::db('agent/member')->insert($where);
+            if ($status < 3) {
+                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;
+                        $update['pay_status'] = 2;
+                        # 财务终审之后,先生成代理商
+                        $order = Dever::db('agent/order')->find($order_id);
+                        if ($order['mid'] <= 0) {
+                            # 生成
+                            $where['mobile'] = $order['mobile'];
+                            $member = Dever::db('agent/member')->find($where);
+                            if ($member) {
+                                $update['mid'] = $member['id'];
+                            } else {
+                                $data = $where;
+                                $data['name'] = $order['name'];
+                                $data['idcard'] = $order['idcard'];
+                                $data['idcard_front'] = $order['idcard_front'];
+                                $data['idcard_back'] = $order['idcard_back'];
+                                $data['role'] = 1;
+                                $data['parent_mid'] = $order['parent_mid'];
+                                $update['mid'] = Dever::db('agent/member')->insert($data);
+                            }
                         }
                     }
+
+                    Dever::db('agent/order')->update($update);
+                } else {
+                    Dever::db('agent/order')->update(array('where_id' => $order_id, 'status' => 5));
+                }
+            } elseif ($status == 3) {
+                $info = Dever::db('agent/order_process')->find($id);
+                if ($info && $info['status'] == 3) {
+                    $info['type'] = explode(',', $info['type']);
                 }
+                if (in_array(2, $info['type'])) {
+                    $goods_status = 3;
+                } else {
+                    $goods_status = 2;
+                }
+                Dever::db('agent/order')->update(array('where_id' => $order_id, 'fdate' => time(), 'status' => 4, 'goods_status' => $goods_status));
 
-                Dever::db('agent/order')->update($update);
-            } else {
-                Dever::db('agent/order')->update(array('where_id' => $order_id, 'status' => 5));
+                $order = Dever::db('agent/order')->find($order_id);
+                if ($order && $order['mid']) {
+                    $member = Dever::db('agent/member')->find($order['mid']);
+                    if ($member && $member['status'] == 1) {
+                        Dever::db('agent/member')->update(array('where_id' => $order['mid'], 'status' => 2));
+                    }
+
+                    $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);
+
+                    if (!$area) {
+                        $area_data['type'] = $order['get_type'];
+                        Dever::db('agent/member_area')->insert($area_where);
+                    }
+                }
             }
         }
     }
 
     # 发放权益
-    public function setGoods_commit_api()
+    public function set_commit_api()
     {
         Dever::config('base')->hook = true;
-        $type = 2;
+        $type = Dever::input('type', 2);
 
         $order_id = Dever::input('order_id');
         # 检测是否发放过了
@@ -64,6 +98,9 @@ class Manage
             } else {
                 $data = $where;
                 $data['name'] = $order['name'];
+                $data['idcard'] = $order['idcard'];
+                $data['idcard_front'] = $order['idcard_front'];
+                $data['idcard_back'] = $order['idcard_back'];
                 $data['role'] = 1;
                 $data['parent_mid'] = $order['parent_mid'];
                 $update['mid'] = Dever::db('agent/member')->insert($data);
@@ -93,34 +130,16 @@ class Manage
                 $state = Dever::db('agent/order_process')->insert($data);
             } else {
                 $data['where_id'] = $order_process['id'];
-                $order_process['type'][] = 2;
+                $order_process['type'][] = $type;
                 $data['type'] = implode(',', $order_process['type']);
                 $state = Dever::db('agent/order_process')->update($data);
             }
             if ($state) {
-                $goods = Dever::db('agent/order_goods')->getData(array('order_id' => $order_id));
-                if (!$goods) {
-                    $goods = Dever::db('setting/role_goods')->getData(array('role_id' => $order['role'], 'give' => $order['order_type']));
-                }
 
-                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'];
-                            Dever::db('agent/member_goods')->update($up);
-                        } else {
-                            $up = $where;
-                            $up['total_num'] = $v['num'];
-                            Dever::db('agent/member_goods')->insert($up);
-                        }
-                    }
+                if ($type == 2) {
+                    $this->setGoods($order);
+                } elseif ($type == 3) {
+                    $this->setCash($order);
                 }
             }
             return 'reload';
@@ -128,4 +147,62 @@ class Manage
             Dever::alert('无发放权限');
         }
     }
+
+    private function setGoods($order)
+    {
+        $goods = Dever::db('agent/order_goods')->getData(array('order_id' => $order['id']));
+        if (!$goods) {
+            $goods = Dever::db('setting/role_goods')->getData(array('role_id' => $order['role'], 'give' => $order['order_type']));
+        }
+
+        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'];
+                    Dever::db('agent/member_goods')->update($up);
+                } else {
+                    $up = $where;
+                    $up['total_num'] = $v['num'];
+                    Dever::db('agent/member_goods')->insert($up);
+                }
+            }
+        }
+    }
+
+    private function setCash($order)
+    {
+        $param = Dever::input('param');
+        if ($param) {
+            $param = explode(',', $param);
+            foreach ($param as $k => $v) {
+                $t = explode('-', $v);
+                $where['type'] = $t[0];
+                $where['order_id'] = $order['id'];
+                $where['mid'] = $order['mid'];
+                $where['parent_mid'] = $t[2];
+                $info = Dever::db('agent/order_cash')->find($where);
+                if (!$info) {
+                    $insert = $where;
+                    $insert['cash'] = $t[3];
+                    Dever::db('agent/order_cash')->insert($insert);
+                } else {
+                    $update['where_id'] = $info['id'];
+                    $update['cash'] = $t[3];
+                    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');
+                }
+            }
+        }
+    }
 }

+ 21 - 0
service/agent/lib/Member.php

@@ -67,4 +67,25 @@ class Member
             Dever::alert('验证码输入错误');
         }
     }
+
+    /**
+     * 更新余额和业绩
+     * @return mixed
+     */
+    public function up($mid, $cash, $sell, $type = 1, $method = 'upSell', $level_id = false)
+    {
+        $data['where_id'] = $mid;
+        $data['cash'] = $cash;
+        $data['upcol'] = $sell;
+        if ($level_id) {
+            $data['level_id'] = $level_id;
+        }
+        
+        Dever::db('agent/member')->$method($data);
+
+        $info = Dever::db('agent/member')->find($mid);
+
+        # 增加日志
+
+    }
 }

+ 92 - 57
service/agent/lib/Order.php

@@ -392,6 +392,11 @@ class Order
             ),
         );
 
+        $soft = '';
+        if ($role['soft'] && $role['soft'] > 0) {
+            //$soft = '【<a href="" style="color:blue">拆分代理费</a>】';
+        }
+
         $result['支付信息'] = array
         (
             'type' => 'info',
@@ -400,13 +405,13 @@ class Order
                 array
                 (
                     array('支付方式', $config['pay_type'][$info['pay_type']]),
-                    array('支付金额', '¥' . $info['price'] . '元'),
-                    array('支付状态', $config['pay_status'][$info['pay_status']]),
+                    array('支付金额', '¥' . $info['price'] . '元' . $soft),
                 ),
 
                 array
                 (
                     array('付款备注', $info['desc']),
+                    array('支付状态', $config['pay_status'][$info['pay_status']]),
                     array('支付凭证', $pay_pic),
                 ),
             ),
@@ -425,19 +430,28 @@ class Order
             $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,desc', 'manage'),
+                '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'),
                 '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]) {
+                $purl .= '&where_id=' . $process[3]['id'];
+            }
             $button[] = array
             (
                 'type' => 'edit',
-                'link' => Dever::url('project/database/update?project=agent&table=order_process&order_id='.$info['id'].'&status=3&col=order_id,status,type', 'manage'),
+                'link' => $purl,
                 'name' => '确认完成',
             );
         }
 
         if ($info['status'] == 3 || $info['status'] == 4) {
+
+            if (isset($process[3]) && $process[3]) {
+                $process[3]['type'] = explode(',', $process[3]['type']);
+            }
+
             if ($parent_member) {
                 # 这里要获取上级信息
                 $table['head'] = array('名称', '角色', '级别', '分润(元)');
@@ -460,78 +474,99 @@ class Order
                         }
                         $cash = 0;
 
-                        # 获取当前用户的业绩
-                        if (!$parent_info['sell']) {
-                            $parent_info['sell'] = 0;
-                        }
-                        $sell = $parent_info['sell'] + $info['price'];
-                        # 根据业绩获取等级
-                        $level = Dever::db('setting/level')->getOne(array('target' => $sell));
-                        if ($level && $level['level'] > $parent_level['level']) {
-                            # 升级
-                            $old = $parent_level;
-                            $parent_info['level_id'] = $level['id'];
-                            $parent_level = $level;
-                            $parent_level['name'] = $old['name'] . '->' . $level['name'];
-                        }
-
-                        # 获取直推人数
-                        $parent_num = Dever::load('invite/api')->getChildNum($v['uid'], 1) + 1;
+                        $order_cash = Dever::db('agent/order_cash')->getData(array('order_id' => $info['id'], 'parent_mid' => $v['uid'], 'type' => 2));
 
-                        if ($parent_num >= $parent_level['num']) {
-                            # 达到要求,开始团队分润
-                            if ($parent_per > 0) {
-                                $parent_level['value'] = $parent_level['value'] - $parent_per;
+                        if ($order_cash) {
+                            $cash = $order_cash['cash'];
+                        } else {
+                            # 根据团队业绩获取等级
+                            # 获取当前用户的团队业绩
+                            if (!$parent_info['group_sell']) {
+                                $parent_info['group_sell'] = 0;
+                            }
+                            $sell = $parent_info['group_sell'] + $info['price'];
+
+                            $level = Dever::db('setting/level')->getOne(array('target' => $sell));
+                            if ($level && $level['level'] > $parent_level['level']) {
+                                # 升级
+                                $old = $parent_level;
+                                $parent_info['level_id'] = $level['id'];
+                                $parent_level = $level;
+                                $parent_level['name'] = $old['name'] . '->' . $level['name'];
                             }
-                            if ($parent_level['value'] > 0) {
-                                $cash += $info['price'] * ($parent_level['value']/100);
-                                $parent_per = $parent_level['value'];
+
+                            # 获取直推人数
+                            $parent_num = Dever::load('invite/api')->getChildNum($v['uid'], 1) + 1;
+
+                            if ($parent_num >= $parent_level['num']) {
+                                # 达到要求,开始团队分润
+                                if ($parent_per > 0) {
+                                    $parent_level['value'] = $parent_level['value'] - $parent_per;
+                                }
+                                if ($parent_level['value'] > 0) {
+                                    $cash += $info['price'] * ($parent_level['value']/100);
+                                    $parent_per = $parent_level['value'];
+                                }
                             }
                         }
 
                         if ($k == 0) {
+                            $order_cash = Dever::db('agent/order_cash')->getData(array('order_id' => $info['id'], 'parent_mid' => $v['uid'], 'type' => 1));
                             $parent_name .= $parent_role['name'] . '('.$parent_level['name'].')';
                             # 根据角色获取佣金 直推
-                            $reward = Dever::db('setting/role_reward')->find(array('role_id' => $parent_info['role'], 't_role_id' => $info['role']));
-                            if ($reward) {
-                                if ($reward['num'] == 1) {
-                                    if ($reward['value_type'] == 1) {
-                                        $cash += $info['price'] * ($reward['value']/100);
-                                    } else {
-                                        $cash += $reward['value'];
+                            if (!$order_cash) {
+                                $reward = Dever::db('setting/role_reward')->find(array('role_id' => $parent_info['role'], 't_role_id' => $info['role']));
+                                if ($reward) {
+                                    if ($reward['num'] == 1) {
+                                        if ($reward['value_type'] == 1) {
+                                            $zcash = $info['price'] * ($reward['value']/100);
+                                        } else {
+                                            $zcash = $reward['value'];
+                                        }
+
+                                        $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>元';
                                     }
                                 }
+                            } else {
+                                $zcash = $order_cash['cash'];
+                                $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'].'">' . $cash . '</a>';
 
                         $table['body'][] = array($parent_info['name'], $parent_role['name'], $parent_level['name'], $cash);
                     }
                 }
+
+                if (isset($process[3]['type']) && is_array($process[3]['type']) && in_array(3, $process[3]['type'])) {
+                    $parent_title = '(已发放分润)';
+                    $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');
+                    $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>'
+                    );
+                }
                 
-                $parent_button[] = array(
-                    'type' => 'link',
-                    'link' => Dever::url('lib/order_set.home?order_id='.$info['id'].'&role_id=' . $info['role'], 'agent'),
-                    'name' => '修改分润金额'
-                );
-                $parent_button[] = array(
-                    'type' => 'link',
-                    'link' => Dever::url('lib/manage.setGoods_commit?order_id='.$info['id'], 'agent'),
-                    'name' => '确认分润比例'
-                );
-                $result['分润信息'] = array
+                $result['分润信息' . $parent_title] = array
                 (
                     'type' => 'table',
                     'content' => $table,
-                    'head' => array('name' => $parent_name, 'btn' => $parent_button),
+                    'head' => array('name' => '<span>' . $parent_name . '</span>', 'btn' => $parent_button),
                 );
             }
 
-            if (isset($process[3]) && $process[3]) {
-                $process[3]['type'] = explode(',', $process[3]['type']);
-            }
-
             $goods = Dever::db('agent/order_goods')->getData(array('order_id' => $info['id']));
             if (!$goods) {
                 $goods = Dever::db('setting/role_goods')->getData(array('role_id' => $info['role'], 'give' => $info['order_type']));
@@ -539,11 +574,11 @@ class Order
 
             if (isset($process[3]['type']) && is_array($process[3]['type']) && in_array(2, $process[3]['type'])) {
                 $process_status = 1;
-                $process_name = '(已发放权益)';
+                $process_title = '(已发放权益)';
                 $process_button = array();
             } else {
                 $process_status = 2;
-                $process_name = '(未发放权益)';
+                $process_title = '(未发放权益)';
                 
                 $process_button[] = array(
                     'type' => 'link',
@@ -552,7 +587,7 @@ class Order
                 );
                 $process_button[] = array(
                     'type' => 'action',
-                    'link' => Dever::url('lib/manage.setGoods_commit?order_id='.$info['id'], 'agent'),
+                    'link' => Dever::url('lib/manage.set_commit?type=2&order_id='.$info['id'], 'agent'),
                     'name' => '发放权益'
                 );
             }
@@ -607,7 +642,7 @@ class Order
                     $body[] = $d;
                 }
 
-                $result['权益信息' . $process_name] = array
+                $result['权益信息' . $process_title] = array
                 (
                     'type' => 'list',
                     'head' => array('name' => '权益列表:', 'btn' => $process_button),

+ 160 - 0
service/agent/src/My.php

@@ -14,6 +14,166 @@ 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->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']);
+        }
     	return $this->user;
     }
+
+    # 账号与代理区域
+    public function area()
+    {
+        $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['button'] = array();
+        if ($this->data['user']['role']) {
+            if ($this->data['user']['role']['opset'] == 1) {
+                $this->data['button'][] = 'up';
+            }
+            if ($this->data['user']['role']['type'] == 2) {
+                $this->data['button'][] = 'buy';
+            }
+        }
+
+        return $this->data;
+    }
+
+    # 账号与代理区域
+    public function getUpInfo()
+    {
+        $this->data['user'] = $this->getInfo();
+        $this->data['role'] = Dever::db('setting/role')->getInfo(array('opset' => 1, 'type' => 2));
+        $this->data['config'] = Dever::db('setting/base')->find();
+
+        return $this->data;
+    }
+
+    # 购买新区域
+    public function buyArea()
+    {
+        $state = Dever::load('agent/lib/order')->action($this->uid);
+
+        if ($state) {
+            return $state;
+        } else {
+            Dever::alert('购买失败');
+        }
+    }
+
+    # 推广邀请
+    public function invite()
+    {
+        $this->data['code'] = Dever::load('invite/api')->code($this->uid);
+
+        return $this->data;
+    }
+
+    # 代理区域查询
+    public function checkArea()
+    {
+        $where['role'] = Dever::input('role');
+        $where['area'] = Dever::input('area');
+
+        $this->data = Dever::load('agent/lib/order')->getPrice();
+        $info = Dever::db('agent/member_area')->find($where);
+
+        # 1已被代理 2未被代理
+        if ($info) {
+            $this->data['state'] = 1;
+        } else {
+            $this->data['state'] = 2;
+        }
+
+        return $this->data;
+    }
+
+    # 我的代理订单
+    public function order()
+    {
+        $where = array();
+        $where['mid'] = $this->uid;
+        $type = Dever::input('type');
+        if ($type == 1) {
+            # 审核中
+            $where['status'] = '1,2,3';
+        } elseif ($type == 2) {
+            # 审核中
+            $where['status'] = '4';
+        } elseif ($type == 3) {
+            # 审核中
+            $where['status'] = '5';
+        }
+        
+        $this->data['list'] = Dever::db('agent/order')->getData($where);
+
+        if ($this->data['list']) {
+            foreach ($this->data['list'] as $k => $v) {
+                $this->data['list'][$k] = $this->getOrderInfo($v);
+            }
+        }
+        return $this->data;
+    }
+
+    public function orderInfo()
+    {
+        $where = array();
+        $where['mid'] = $this->uid;
+        $where['id'] = Dever::input('id');
+        $this->data['info'] = Dever::db('agent/order')->find($where);
+
+        if ($this->data['info']) {
+            $this->data['info'] = $this->getOrderInfo($this->data['info']);
+        }
+
+        return $this->data;
+    }
+
+    private function getOrderInfo($info)
+    {
+        $info['role'] = Dever::db('setting/role')->find($info['role']);
+        if ($info['status'] <= 3) {
+            $info['status'] = 1;
+            $info['status_name'] = '审核中';
+        } elseif ($info['status'] == 4) {
+            $info['status'] = 2;
+            $info['status_name'] = '已确认';
+        } elseif ($info['status'] == 5) {
+            $info['status'] = 3;
+            $info['status_name'] = '已作废';
+        }
+        $info['cdate'] = date('Y-m-d', $info['cdate']);
+
+        $info['area_string'] = Dever::load("area/api.string", $info['area']);
+
+        $info['member'] = Dever::db('agent/member')->find($info['mid']);
+
+        $info['parent_member'] = Dever::db('agent/member')->find($info['parent_mid']);
+
+        return $info;
+    }
+
+    # 我的权益
+    public function goodsList()
+    {
+        
+    }
+
+    # 我的权益订单
+    public function goodsOrder()
+    {
+
+    }
 }

+ 119 - 0
service/setting/database/agreement.php

@@ -0,0 +1,119 @@
+<?php
+
+$role = function()
+{
+    $info = Dever::db('setting/role')->select();
+    return $info;
+};
+
+$type = array
+(
+    1 => '代理商合同',
+    2 => '代理升级变更合同',
+    3 => '软件服务合同',
+);
+
+return array
+(
+    # 表名
+    'name' => 'agreement',
+    # 显示给用户看的名称
+    'lang' => '合同模板',
+    'order' => 3,
+    # 数据结构
+    'struct' => array
+    (
+    
+        'id'        => array
+        (
+            'type'      => 'int-11',
+            'name'      => 'ID',
+            'default'   => '',
+            'desc'      => '',
+            'match'     => 'is_numeric',
+            'search'    => 'order',
+            'update'    => 'hidden',
+            //'list'        => true,
+        ),
+
+        'type'        => array
+        (
+            'type'      => 'tinyint-1',
+            'name'      => '合同类型',
+            'default'   => '1',
+            'desc'      => '合同类型',
+            'match'     => 'is_numeric',
+            'update'    => 'radio',
+            'option'    => $type,
+            'search'    => 'select',
+            'list'      => true,
+            'control'   => 'type',
+        ),
+
+        'role_id'      => array
+        (
+            'type'      => 'int-11',
+            'name'      => '代理商角色',
+            'default'   => '',
+            'desc'      => '代理商角色',
+            'match'     => 'is_numeric',
+            'update'    => 'hidden',
+            'search'    => 'hidden',
+            'list'      => 'Dever::load("setting/role-one#name", {role_id})',
+            'show'      => 'type=1',
+        ),
+
+        'name'      => array
+        (
+            'type'      => 'varchar-500',
+            'name'      => '合同名称-变量说明:{name}是用户姓名,{role}代理商名称,{area}城市地区',
+            'default'   => '',
+            'desc'      => '合同名称',
+            'match'     => 'is_string',
+            'update'    => 'text',
+            'search'    => 'fulltext',
+            'list'      => true,
+        ),
+
+        'content'      => array
+        (
+            'type'      => 'text-255',
+            'name'      => '合同内容-变量说明:{name}是用户姓名,{role}代理商名称,{area}城市地区',
+            'default'   => '',
+            'desc'      => '合同内容',
+            'match'     => 'is_string',
+            'update'    => 'textarea',
+        ),
+
+        '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
+    (
+        
+    ),
+);

+ 16 - 5
service/setting/database/role.php

@@ -116,6 +116,16 @@ return array
             'show'      => 'type=1',
         ),
 
+        'soft'      => array
+        (
+            'type'      => 'varchar-50',
+            'name'      => '软件服务费-如果填写软件服务费,则代理商订单可以进行拆分,这里填写百分比的数值,如10%软件服务费,这里填写10',
+            'default'   => '0',
+            'desc'      => '软件服务费',
+            'match'     => 'option',
+            'update'    => 'text',
+        ),
+
         'profit'      => array
         (
             'type'      => 'varchar-15',
@@ -165,12 +175,13 @@ return array
 		'value' => array
 		(
 			'1,"普通用户", "用户", "注册但未注册成功代理商角色的用户", 1, 1, 2, "0", 1,' . DEVER_TIME,
-			'2,"街道代理商", "街道", "一个街道区域的代理商。获得区域内门店利润5%收益。", 2, 3, 1, "5", 1,' . DEVER_TIME,
-			'3,"区县代理商", "区县", "一线城市的区,与二三线城市的县级代理商。获得区域内门店利润3%收益。", 2, 2, 1, "3", 1,' . DEVER_TIME,
-			'4,"城市代理商", "城市", "一个城市代理商,有一二三线城市的区分。获得区域内门店利润1%收益。", 2, 1, 1, "1", 1,' . DEVER_TIME,
+            '2,"城市代理商", "城市", "一个城市代理商,有一二三线城市的区分。获得区域内门店利润1%收益。", 2, 1, 2, "1", 1,' . DEVER_TIME,
+            '3,"区县代理商", "区县", "一线城市的区,与二三线城市的县级代理商。获得区域内门店利润3%收益。", 2, 2, 1, "3", 1,' . DEVER_TIME,
+			'4,"街道代理商", "街道", "一个街道区域的代理商。获得区域内门店利润5%收益。", 2, 3, 1, "5", 1,' . DEVER_TIME,
+			
 			'5,"创服代理商", "创服", "在开创本系统时的一个代理商角色,以后此角色不新增,要保留,因为其中还有一些权益未兑换。", 3, 1, 2, "0", 1,' . DEVER_TIME,
-			'6,"创客会员", "创客", "有分销能力的会员,但不产生代理商收益。", 1, 1, 1, "0", 1,' . DEVER_TIME,
-			'7,"消客会员", "消客", "能带动产品销售量的会员。", 1, 1, 1, "0", 1,' . DEVER_TIME,
+			'6,"创客会员", "创客", "有分销能力的会员,但不产生代理商收益。", 1, 1, 1, "5000", 1,' . DEVER_TIME,
+			'7,"消客会员", "消客", "能带动产品销售量的会员。", 1, 1, 1, "2000", 1,' . DEVER_TIME,
 		),
 	),