rabin 3 years ago
parent
commit
45e49e52a1

+ 20 - 21
service/agent/database/member_account_log.php

@@ -22,9 +22,8 @@ $role = function()
 
 $type = array
 (
-    // 1 => '购买',
-    1 => '客户自己修改',
-    3 => '后台修改',
+    1 => '客户修改',
+    2 => '后台修改',
 );
 
 return array
@@ -153,25 +152,25 @@ return array
             'option'    => Dever::url('api.get?level_total=4', 'area'),
             'list'      => 'Dever::load("area/api.string", "{area}")',
         ),
-        // 'audit_date'     => array
-        // (
-        //     'type'      => 'int-11',
-        //     'name'      => '审核时间',
-        //     'match'     => 'is_numeric',
-        //     'desc'      => '审核时间',
-        //     'default'   => '',
-        // ),
+        'audit_date'     => array
+        (
+            'type'      => 'int-11',
+            'name'      => '审核时间',
+            'match'     => 'is_numeric',
+            'desc'      => '审核时间',
+            'default'   => '',
+        ),
 
-        // 'audit_admin'     => array
-        // (
-        //     'type'      => 'int-11',
-        //     'name'      => '操作人',
-        //     'default'   => '',
-        //     'match'     => 'is_numeric',
-        //     'desc'      => '操作人',
-        //     'list'      => '"{audit_admin}" > 0 ? Dever::load("manage/admin-find#username", {audit_admin}) : "-"',
-        //     // 'list_order'  => 8,
-        // ),
+        'audit_admin'     => array
+        (
+            'type'      => 'int-11',
+            'name'      => '操作人',
+            'default'   => '',
+            'match'     => 'is_numeric',
+            'desc'      => '操作人',
+            'list'      => '"{audit_admin}" > 0 ? Dever::load("manage/admin-find#username", {audit_admin}) : "-"',
+            // 'list_order'  => 8,
+        ),
         'state'     => array
         (
             'type'      => 'tinyint-1',

+ 14 - 49
service/agent/database/member_area_log.php

@@ -22,9 +22,8 @@ $role = function()
 
 $type = array
 (
-    // 1 => '购买',
-    1 => '客户自己修改',
-    3 => '后台修改',
+    1 => '客户修改',
+    2 => '后台修改',
 );
 
 return array
@@ -94,61 +93,27 @@ return array
             //'list_order' => 3,
         ),
 
-        // 'agent-member-role'=> array
-        // (
-        //     'name'      => '角色',
-        //     'default'   => '',
-        //     'desc'      => '角色',
-        //     'match'     => 'option',
-        //     # 读取另外表的关联方式
-        //     'sync'      => array('mid', 'id'),
-        //     //'list'      => 'Dever::load("setting/role-find#name", "{agent-member-role}")',
-        //     //'list_order' => 5,
-        // ),
-
-        'price'      => array
+        'old_area'       => array
         (
-            'type'      => 'float-11,2',
-            'name'      => '实付金额',
-            'default'   => '0',
-            'desc'      => '金额',
+            'type'      => 'varchar-500',
+            'name'      => '变更前区域',
+            'default'   => '',
+            'desc'      => '变更前区域',
             'match'     => 'option',
-            'update'    => 'text',
-            'list'      => true,
+            //'search'    => 'linkage',
+            'update'    => 'linkage',
+            'option'    => Dever::url('api.get?level_total=4', 'area'),
+            'list'      => 'Dever::load("area/api.string", "{old_area}")',
         ),
 
-        'old_role'      => array
-        (
-            'type'      => 'int-11',
-            'name'      => '升级前角色',
-            'default'   => '',
-            'desc'      => '升级前角色',
-            'match'     => 'is_numeric',
-            'search'    => 'select',
-            'update'    => 'checkbox',
-            'option'    => $role,
-            'list'      => true,
-        ),
-        'new_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'      => '代理区域',
+            'name'      => '变更后区域',
             'default'   => '',
-            'desc'      => '代理区域',
+            'desc'      => '变更后区域',
             'match'     => 'option',
-            'search'    => 'linkage',
+            //'search'    => 'linkage',
             'update'    => 'linkage',
             'option'    => Dever::url('api.get?level_total=4', 'area'),
             'list'      => 'Dever::load("area/api.string", "{area}")',

+ 38 - 1
service/agent/database/member_level_log.php

@@ -27,6 +27,12 @@ $level = function()
 	return $array;
 };
 
+$type = array
+(
+    1 => '客户修改',
+    2 => '后台修改',
+);
+
 return array
 (
     # 表名
@@ -183,6 +189,37 @@ return array
             'list_order' => 9,
         ),
 
+        'type'        => array
+        (
+            'type'      => 'tinyint-1',
+            'name'      => '类型',
+            'default'   => '1',
+            'desc'      => '类型',
+            'match'     => 'is_numeric',
+            'update'    => 'radio',
+            'option'    => $type,
+        ),
+
+        'audit_date'     => array
+        (
+            'type'      => 'int-11',
+            'name'      => '审核时间',
+            'match'     => 'is_numeric',
+            'desc'      => '审核时间',
+            'default'   => '',
+        ),
+
+        'audit_admin'     => array
+        (
+            'type'      => 'int-11',
+            'name'      => '操作人',
+            'default'   => '',
+            'match'     => 'is_numeric',
+            'desc'      => '操作人',
+            'list'      => '"{audit_admin}" > 0 ? Dever::load("manage/admin-find#username", {audit_admin}) : "-"',
+            // 'list_order'  => 8,
+        ),
+
         'state'     => array
         (
             'type'      => 'tinyint-1',
@@ -195,7 +232,7 @@ return array
         'cdate'     => array
         (
             'type'      => 'int-11',
-            'name'      => '升级时间',
+            'name'      => '更改时间',
             'match'     => array('is_numeric', time()),
             'desc'      => '',
             # 只有insert时才生效

+ 7 - 0
service/agent/lib/Level_log.php

@@ -19,6 +19,13 @@ class Level_log
     	$data['sell'] = $sell;
         $data['group_num'] = $group_num;
     	$data['order_num'] = $this->getOrderId();
+        if ($order_id && $order_id > 0) {
+            $data['type'] = 1;
+        } else {
+            $admin = Dever::load('manage/auth.info');
+            $data['audit_admin'] = $admin['id'];
+            $data['type'] = 2;
+        }
 
     	$id = Dever::db('agent/member_level_log')->insert($data);
 

+ 101 - 106
service/agent/lib/Manage.php

@@ -28,59 +28,94 @@ class Manage
         $id = $id['where_id'];
         $area = Dever::param('area', $data);#修改后
         $role = Dever::param('role', $data);
-        if ($area && is_array($area)) {
-            $area_string = implode(',', $area);
-            if (strstr($area_string, '-1')) {
-                Dever::alert('请选择正确的区域');
-            }
-            $member = Dever::db('agent/member')->find($id);
-            if ($area_string == $member['area']) {
-                return;
-            }
-            $role = $member['role'];
-            $member_role = Dever::db('setting/role')->one($member['role']);
-            if ($member_role && $member_role['type'] == 2) {
-                Dever::load('area/api')->upStatus($member['area'], 1);
-
-                $area_data = array('mid' => $id);
-                $area_info = Dever::db('agent/member_area')->find($area_data);
-                if ($area_info) {
-                    Dever::db('agent/member_area')->update(array('where_id' => $area_info['id'], 'state' => 2));
-                }
-            }
-            $role = Dever::db('setting/role')->one($role);
+        $level_id = Dever::param('level_id', $data);
+        
+        $member = Dever::db('agent/member')->find($id);
+        if (!$member) {
+            return;
+        }
+        if ($area && is_array($area) && $role) {
+            $role = Dever::db('setting/role')->find($role);
+            $area_string = array();
             if ($role && $role['type'] == 2) {
-                $num = count($area);
-                if ($role['area'] == 1 && $num < 2) {
-                    Dever::alert('请选择城市');
-                } elseif ($role['area'] == 2 && $num < 3) {
-                    Dever::alert('请选择区县');
-                } elseif ($role['area'] == 3 && $num < 4) {
-                    Dever::alert('请选择街道');
-                }
-                Dever::load('area/api')->upStatus($area_string, 2);
-                $area_data = array('mid' => $id, 'order_id' => -1, 'role' => $member['role'], 'area' => $area_string);
-                $area_data['type'] = 3;
-                $area_data['price'] = 0;
-                $area_data['status'] = 1;
-                $oldorder = Dever::db('agent/order')->state(array('mid' =>$id));
-                if (count($oldorder)>=2){
-                    $oldorder = Dever::db('agent/order')->getFindOne(array('mid' => $id,'order_type' => 2,'state' => 1));
-                }else{
-                    $oldorder = Dever::db('agent/order')->find(array('mid' => $id,'order_type' => 1));
-                }
-                $oldrole = Dever::db('setting/role')->find($oldorder['role']);
-                $area_data['old_role'] = $oldrole['id'];
-                Dever::db('agent/member_area')->insert($area_data);
-                if(!$member['area']){
-                    $member['area']='';
-                }
-                $admin = Dever::load('manage/auth.info');
-                // $this->area_log($id,-1,$area_data['type'],$member['area'],$area,$area_data['price'],$member['role'],$admin['id']);
-               // $mid,$order_id,$type,$old_role,$new_role,$price,$area,$audit_admin
-                $this->area_log($id,-1,$area_data['type'],$area_data['old_role'],$member['role'],$area_data['price'],$area,$admin['id']);
+                $area_string = Dever::load('agent/lib/order')->checkArea($area, $role, $member['id']);
+            } else {
+                $area_string = implode(',', $area);
+                $area_string = str_replace(',-1', '', $area_string);
             }
+            
+            $data['set_area'] = $area_string;
+            $this->upLog($member, $role, $area_string, -1, 3);
         }
+        if ($level_id && $level_id != $member['level_id']) {
+            $group_num = Dever::load('invite/api')->getChildNum($member['id'], 1);
+            Dever::load('agent/lib/level_log')->up($member['id'], -1, $member['level_id'], $level_id, 0, 0, $group_num);
+        }
+        return $data;
+    }
+
+    # 更改日志
+    private function upLog($member, $role, $area, $order_id = -1, $type = 3)
+    {
+        if (is_numeric($role)) {
+            $role = Dever::db('setting/role')->find($role);
+        }
+        if (!$role) {
+            return;
+        }
+        $this->upRole($member, $role, $area, $order_id);
+        $this->upArea($member, $role, $area, $order_id, $type);
+    }
+
+    private function upRole($member, $role, $area, $order_id = -1)
+    {
+        if ($role['id'] == $member['role']) {
+            return;
+        }
+        $data['mid'] = $member['id'];
+        $data['order_id'] = $order_id;
+        $data['old_role'] = $member['role'];
+        $data['new_role'] = $role['id'];
+        
+        $data['area'] = $area;
+        if ($order_id && $order_id > 0) {
+            $data['type'] = 1;
+            $order = Dever::db('agent/order')->find($order_id);
+            $data['price'] = $order['price'];
+        } else {
+            $data['type'] = 2;
+            $admin = Dever::load('manage/auth.info');
+            $data['audit_admin'] = $admin['id'];
+        }
+        
+        Dever::db('agent/member_account_log')->insert($data);
+    }
+
+    private function upArea($member, $role, $area, $order_id = -1, $type = 3)
+    {
+        if (!$role) {
+            return;
+        }
+        if ($area == $member['area']) {
+            return;
+        }
+        $area_data = array('mid' => $member['id']);
+        $area_info = Dever::db('agent/member_area')->find($area_data);
+        if ($area_info) {
+            Dever::db('agent/member_area')->update(array('where_id' => $area_info['id'], 'state' => 2));
+        }
+        if ($role && $role['type'] == 2) {
+            Dever::load('area/api')->upStatus($area, 2);
+            $area_data['order_id'] = $order_id;
+            $area_data['role'] = $role['id'];
+            $area_data['area'] = $area;
+            $area_data['type'] = $type;
+            $area_data['price'] = 0;
+            $area_data['status'] = 1;
+            Dever::db('agent/member_area')->insert($area_data);
+        }
+
+        $this->area_log($member['id'], $order_id, $member['area'], $area);
     }
      
     # 获取
@@ -279,72 +314,32 @@ class Manage
                     $update['role'] = $order['role'];
 
                     Dever::db('agent/member')->update($update);
-
-                    #账户升级变更记录
-                    $account = array('mid' => $order['mid'], 'order_type' => 2);
-                    if ($order['order_type']==1){
-                        $oldrole['id'] = '';
-                        $newrole['id'] = $order['role'];
-                    }else{
-                        $neworder = Dever::db('agent/order')->state($account);
-                        if (count($neworder)>=2){
-                            $neworder = Dever::db('agent/order')->getFindOne(array('id' => $order['id'],'mid' => $order['mid'],'order_type' => 2,'state' => 1));
-                        }else{
-                            $neworder = Dever::db('agent/order')->getFindOne(array('mid' => $order['mid'],'order_type' => 1));
-                        }
-                        $newrole = Dever::db('setting/role')->find($order['role']);
-                        $oldrole = Dever::db('setting/role')->find($neworder['role']);
-                    }
-                    $acc['mid'] = $order['mid'];
-                    $acc['order_id'] = $order['id'];
-                    $acc['old_role'] = $oldrole['id'];
-                    $acc['new_role'] = $newrole['id'];
-                    $acc['price'] = $order['price'];
-                    $acc['area'] = $order['area'];
-                    Dever::db('agent/member_account_log')->insert($acc);
-                    # 对区域进行占用
-                    $role = Dever::db('setting/role')->one($order['role']);
-                    if ($role && $role['type'] == 2) {
-                        $area_data = array('mid' => $order['mid'], 'order_id' => $order['id'], 'new_role' => $order['role'], 'area' => $order['area']);
-                        $area_datas = array('mid' => $order['mid']);
-                        $area = Dever::db('agent/member_area')->find($area_datas);
-                        // print_R($area);die;
-                        if($area){
-                           Dever::db('agent/member_area')->update(array('where_id'=>$area['id'],'set_state'=>2));
-                            Dever::load('area/api')->upStatus($area['area'], 1);
-                            $old_area = $area['area'];
-                        }
-                        $area_data['price'] = $order['price'];
-                         $oldorder = Dever::db('agent/order')->state(array('mid' =>$order['mid']));
-                        if (count($oldorder)>2){
-                            $oldorder = Dever::db('agent/order')->getFindOne(array('id' => $order['id'],'mid' => $order['mid'],'order_type' => 2,'state' => 1));
-                        }else{
-                            $oldorder = Dever::db('agent/order')->find(array('mid' => $order['mid'],'order_type' => 1));
-                        }
-                        $oldrole = Dever::db('setting/role')->find($oldorder['role']);
-                        $area_data['old_role'] = $oldrole['id'];
-                        Dever::db('agent/member_area')->insert($area_data);
-                        Dever::load('area/api')->upStatus($order['area'], 2);
-                       
-                        $this->area_log($order['mid'],$order['id'],$order['type'],$area_data['old_role'],$order['role'],$order['price'],$order['area'],-1);  
+                    if ($order['price'] > 0) {
+                        $type = 1;
+                    } else {
+                        $type = 2;
                     }
+                    $this->upLog($member, $order['role'], $order['area'], $order['id'], $type);
                 }
             }
         }
     }
     #区域日志
-    public function area_log($mid,$order_id,$type,$old_role,$new_role,$price,$area,$audit_admin){
+    public function area_log($mid,$order_id,$old_area, $area) {
         $data['mid']=$mid;
         $data['order_id']=$order_id;
-        $data['type']=$type;
-        $data['old_role']=$old_role;
-        $data['new_role']=$new_role;
-        $data['price']=$price;
+        $data['old_area']=$old_area;
         $data['area']=$area;
-        $data['aduit_admin'] = $audit_admin;
+        if ($order_id && $order_id > 0) {
+            $data['type'] = 1;
+        } else {
+            $admin = Dever::load('manage/auth.info');
+            $data['audit_admin'] = $admin['id'];
+            $data['type'] = 2;
+        }
+        
         $ids=Dever::db('agent/member_area_log')->insert($data);
         return $ids;
-
     }
 
     # 发放权益
@@ -604,7 +599,7 @@ class Manage
                 $member = Dever::db('agent/member')->find($where['mid']);
                 $desc = $member['name'] . '成为代理商,佣金'.$t['per'].'%';
                 
-                Dever::load('agent/lib/member')->up($member, $order['id'], $order['role'], $where['type'], $where['parent_mid'], $t['cash'], $order['agent_cash'], $t['parent_level'], $desc, $t['child_num']);
+                Dever::load('agent/lib/member')->up($where['parent_mid'], $order['id'], $order['role'], $where['type'], $t['cash'], $order['agent_cash'], $t['parent_level'], $desc, $t['child_num']);
             }
         }
     }

+ 5 - 4
service/agent/lib/Member.php

@@ -168,8 +168,9 @@ class Member
      * 更新余额和业绩
      * @return mixed
      */
-    public function up($member, $order_id, $role, $type, $mid, $cash, $sell, $level_id = false, $desc = '', $group_num = 0)
+    public function up($mid, $order_id, $role, $type, $cash, $sell, $level_id = false, $desc = '', $group_num = 0)
     {
+        $member = Dever::db('agent/member')->find(array('id' => $mid, 'clear' => true));
         $data['where_id'] = $mid;
         if ($cash) {
             Dever::load('bill/lib/cash')->up($mid, $type, $cash, $role, $order_id, $desc, 2);
@@ -194,9 +195,9 @@ class Member
         $data['clear'] = true;
         Dever::db('agent/member')->$method($data);
 
-        if ($level_id) {
-            $member = Dever::db('agent/member')->find($mid);
-            Dever::load('agent/lib/level_log')->up($mid, $order_id, $member['level_id'], $level_id, $sell, $member['group_sell'], $group_num);
+        if ($level_id && $level_id != $member['level_id']) {
+            
+            Dever::load('agent/lib/level_log')->up($mid, $order_id, $member['level_id'], $level_id, $sell, $member['group_sell'] + $sell, $group_num);
         }
     }
 

+ 68 - 0
service/agent/lib/Order.php

@@ -354,6 +354,7 @@ class Order
         if ($data['role']['type'] == 1) {
         	$data['price'] = $data['role']['price'];
         } elseif ($data['role']['type'] == 2) {
+            $data['area'] = $this->checkArea($data['area'], $data['role'], $member ? $member['id'] : false);
         	$data['price'] = Dever::load('area/api')->getPrice($data['role']['area'], $data['area']);
         	if ($data['price'] <= 0) {
         		Dever::alert('代理区域的代理价格为空,请联系客服');
@@ -388,6 +389,73 @@ class Order
         return $data;
     }
 
+    public function checkArea($area, $role, $mid = false)
+    {
+        if (is_string($area)) {
+            $area = explode(',', $area);
+        }
+        $result = array();
+        foreach ($area as $k => $v) {
+            if ($role['area'] == 1) {
+                if ($v < 0) {
+                    if ($k == 1) {
+                        Dever::alert('请选择城市');
+                    }
+                } elseif ($k < 2) {
+                    $result[] = $v;
+                }
+            }
+            if ($role['area'] == 2) {
+                if ($v < 0) {
+                    if ($k == 1) {
+                        Dever::alert('请选择城市');
+                    } elseif ($k == 2) {
+                        Dever::alert('请选择区县');
+                    }
+                } elseif ($k < 3) {
+                    $result[] = $v;
+                }
+            }
+            if ($role['area'] == 3) {
+                if ($v < 0) {
+                    if ($k == 1) {
+                        Dever::alert('请选择城市');
+                    } elseif ($k == 2) {
+                        Dever::alert('请选择区县');
+                    } elseif ($k == 3) {
+                        Dever::alert('请选择街道');
+                    }
+                } elseif ($k < 4) {
+                    $result[] = $v;
+                }
+            }
+        }
+
+        $num = count($result);
+        if ($role['area'] == 1 && $num < 2) {
+            Dever::alert('请选择城市');
+        } elseif ($role['area'] == 2 && $num < 3) {
+            Dever::alert('请选择区县');
+        } elseif ($role['area'] == 3 && $num < 4) {
+            Dever::alert('请选择街道');
+        }
+
+        $result = implode(',', $result);
+        $result = str_replace(',-1', '', $result);
+        $area_info = Dever::db('agent/member_area')->find(array('area' => $result));
+        if ($area_info) {
+            if ($mid) {
+                if ($mid != $area_info['mid']) {
+                    Dever::alert('该区域已被占用');
+                }
+            } else {
+                Dever::alert('该区域已被占用');
+            }
+        }
+
+        return $result;
+    }
+
 
     # 展示订单详情
     public function show()

+ 5 - 1
service/agent/src/Area.php

@@ -9,7 +9,7 @@ class Area
     private $default = array
     (
         'value' => -1,
-        'name' => '不限',
+        'name' => '请选择',
     );
 
     private $search_default = array
@@ -60,6 +60,10 @@ class Area
         # 一般为id
         $level_id = Dever::input('level_id');
 
+        if ($level_id < 0) {
+            Dever::alert('error');
+        }
+
         # 是否是搜索列表页
         $level_search = Dever::input('level_search');
         if ($level_search) {

+ 1 - 1
service/agent/src/My.php

@@ -37,7 +37,7 @@ class My extends Core
     public function addtest()
     {
         $member = $this->user;
-        return Dever::load('agent/lib/member')->up($member, 1, 1, 1, $member['id'], 100, 100, 1, 'dddd', 1);
+        return Dever::load('agent/lib/member')->up($member['id'], 1, 1, 1, 100, 100, 1, 'dddd', 1);
     }
 
     /**