rabin před 2 roky
rodič
revize
690a275fb0

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

@@ -4,6 +4,7 @@ $type = array
 (
     1 => '直推佣金',
     2 => '团队分润',
+    3 => '间推佣金',
 );
 
 return array
@@ -161,5 +162,20 @@ return array
             'type' => 'one',
             'col' => '*',
         ),
+
+        'getAll' => array
+        (
+            # 匹配的正则或函数 选填项
+            'option' => array
+            (
+                'order_id' => 'yes',
+                'parent_mid' => 'yes',
+                'mid' => 'yes',
+                'type' => 'yes',
+                'state' => 1,
+            ),
+            'type' => 'all',
+            'col' => '*',
+        ),
     ),
 );

+ 1 - 0
service/agent/lib/Manage.php

@@ -17,6 +17,7 @@ class Manage
         foreach ($mobile as $k => $v) {
             $member = Dever::db('agent/member')->find(array('mobile' => $v));
             if ($member && $member['area']) {
+                Dever::db('agent/member')->update(array('where_id' => $member['id'], 'set_area' => 'null'));
                 $area = Dever::db('agent/member_area')->find(array('mid' => $member['id'], 'area' => $member['area']));
                 if ($area) {
                     $role = Dever::db('setting/role')->find($member['role']);

+ 108 - 2
service/agent/lib/Order.php

@@ -802,6 +802,20 @@ class Order
         return $button;
     }
 
+    private function getAreaAgent($area, $value)
+    {
+        $city_role = Dever::db('setting/role')->find(array('type' => 2, 'area' => $value));
+        if ($city_role) {
+            $area_info = Dever::db('agent/member')->find(array('area' => $area, 'role' => $city_role['id']));
+            if ($area_info && $area_info['status'] <= 2) {
+                $area_info['level'] = Dever::db('setting/level')->find($area_info['level_id']);
+                $area_info['role'] = $city_role;
+                return $area_info;
+            }
+        }
+        return array();
+    }
+
     private function show_parent($parent_member, $process, $info, $role, &$result)
     {
         # 这里要获取上级信息
@@ -817,6 +831,21 @@ class Order
         $level_up = false;
         $html = '';
         $parent_name = '';
+
+        # 获取区域代理
+        $area_agent = array();
+        if ($role['type'] == 2 && $role['area'] > 1) {
+            if ($role['area'] == 2) {
+                # 区县,只需获取城市代理
+                $temp = explode(',', $info['area']);
+                $area_agent['city'] = $this->getAreaAgent($temp[0] . ',' . $temp[1], 1);
+            } elseif ($role['area'] == 3) {
+                # 街道,同时获取区县和城市代理
+                $temp = explode(',', $info['area']);
+                $area_agent['city'] = $this->getAreaAgent($temp[0] . ',' . $temp[1], 1);
+                $area_agent['county'] = $this->getAreaAgent($temp[0] . ',' . $temp[1] . ',' . $temp[2], 2);
+            }
+        }
         foreach ($parents as $k => $v) {
             $parent_info = Dever::db('agent/member')->find($v['uid']);
             if ($parent_info && $parent_info['status'] == 2 && $parent_per < $max_per) {
@@ -872,7 +901,9 @@ class Order
 
                 # 直推佣金
                 if ($k == 0) {
-                    $parent_name = $this->show_parent_reward($parent_info, $info, $role, $v, $parent_role, $parent_level, $child_num, $table);
+                    $parent_name = $this->show_parent_reward($parent_info, $info, $role, $parent_role, $parent_level, $child_num, $table);
+
+                    $this->show_area_reward($parent_info, $info, $role, $v, $parent_role, $parent_level, $area_agent, $table);
                 }
 
                 $param = array();
@@ -937,6 +968,81 @@ class Order
         );
     }
 
+    private function show_area_reward($parent_info, $info, $role, $v, $parent_role, $parent_level, $area_agent, &$table)
+    {
+        $order_cash = Dever::db('agent/order_cash')->getAll(array('order_id' => $info['id'], 'parent_mid' => $v['uid'], 'type' => 3));
+
+        if ($order_cash) {
+            foreach ($order_cash as $k => $v) {
+                $v['cash'] = '<a style="color:blue">' . $v['cash'] . '</a>';
+                $v['member'] = Dever::db('agent/member')->find($v['mid']);
+                $v['level'] = Dever::db('setting/level')->find($v['member']['level_id']);
+                $v['role'] = Dever::db('setting/role')->find($v['member']['role']);
+                $table['body'][] = array('间推佣金', $v['member']['name'], $v['member']['mobile'], $v['role']['name'], $$v['level']['name'], $v['per'] . '%', $v['cash']);
+            }
+        } else {
+            if (isset($area_agent['county']) && $area_agent['county'] && $area_agent['county']['id'] != $parent_info['id']) {
+                $area_role_reward = Dever::db('setting/role_reward')->find(array('role_id' => $area_agent['county']['role']['id'], 't_role_id' => $role['id']));
+                if ($area_role_reward) {
+                    if (strstr($area_role_reward['fzt_qn_value'], ',')) {
+                        $temp = explode(',', $area_role_reward['fzt_qn_value']);
+                        $area_role_reward['fzt_qn_value'] = $temp[1];
+                    }
+                    
+                    if ($area_role_reward['value_type'] == 1) {
+                        $area_cash = round($info['agent_cash'] * ($area_role_reward['fzt_qn_value']/100), 2);
+                        $area_per = $area_role_reward['fzt_qn_value'];
+                    } else {
+                        $area_cash = $area_role_reward['fzt_qn_value'];
+                        $area_per = 0;
+                    }
+
+                    $area_param = array();
+                    $area_param['type'] = 3;
+                    $area_param['order_id'] = $info['id'];
+                    $area_param['parent_mid'] = $area_agent['county']['id'];
+                    $area_param['cash'] = $area_cash;
+                    $area_param['per'] = $area_per;
+
+                    $area_param = Dever::array_encode($area_param);
+                    $area_cash = '<a style="color:blue" class="set_cash" data-param="'.$area_param.'">' . $area_cash . '</a>';
+
+                    $table['body'][] = array('间推佣金', $area_agent['county']['name'], $area_agent['county']['mobile'], $area_agent['county']['role']['name'], $area_agent['county']['level']['name'], $area_per . '%', $area_cash);
+                }
+            }
+            if (isset($area_agent['city']) && $area_agent['city'] && $area_agent['city']['id'] != $parent_info['id']) {
+                $area_role_reward = Dever::db('setting/role_reward')->find(array('role_id' => $area_agent['county']['role']['id'], 't_role_id' => $role['id']));
+                if ($area_role_reward) {
+                    if (strstr($area_role_reward['fzt_qn_value'], ',')) {
+                        $temp = explode(',', $area_role_reward['fzt_qn_value']);
+                        $area_role_reward['fzt_qn_value'] = $temp[0];
+                    }
+
+                    if ($area_role_reward['value_type'] == 1) {
+                        $area_cash = round($info['agent_cash'] * ($area_role_reward['fzt_qn_value']/100), 2);
+                        $area_per = $area_role_reward['fzt_qn_value'];
+                    } else {
+                        $area_cash = $area_role_reward['fzt_qn_value'];
+                        $area_per = 0;
+                    }
+
+                    $area_param = array();
+                    $area_param['type'] = 3;
+                    $area_param['order_id'] = $info['id'];
+                    $area_param['parent_mid'] = $area_agent['city']['id'];
+                    $area_param['cash'] = $area_cash;
+                    $area_param['per'] = $area_per;
+
+                    $area_param = Dever::array_encode($area_param);
+                    $area_cash = '<a style="color:blue" class="set_cash" data-param="'.$area_param.'">' . $area_cash . '</a>';
+                    $table['body'][] = array('间推佣金', $area_agent['city']['name'], $area_agent['city']['mobile'], $area_agent['city']['role']['name'], $area_agent['city']['level']['name'], $area_per . '%', $area_cash);
+                }
+            }
+        }
+
+        
+    }
+
     private function show_parent_reward($parent_info, $info, $role, $v, $parent_role, $parent_level, $child_num, &$table)
     {
         $parent_name = '邀请人:'.$parent_info['name'].','.$parent_info['mobile'].'&nbsp;&nbsp;邀请人角色:';
@@ -1011,7 +1117,7 @@ class Order
 
                 if ($reward_state) {
                     if ($reward['value_type'] == 1) {
-                        $param['cash'] = $info['agent_cash'] * ($reward['value']/100);
+                        $param['cash'] = round($info['agent_cash'] * ($reward['value']/100), 2);
                         $param['per'] = $reward['value'];
                     } else {
                         $param['cash'] = $reward['value'];

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

@@ -175,6 +175,20 @@ return array
             'show'      => 'levelup=1',
         ),
 
+        'reorder'       => array
+        (
+            'type'      => 'int-11',
+            'name'      => '排序-数值越大越靠前',
+            'default'   => '1',
+            'desc'      => '请输入排序',
+            'match'     => 'option',
+            'update'  => 'text',
+            'search'    => 'order',
+            'list'      => true,
+            'order'     => 'desc',
+            'edit'      => true,
+        ),
+
         'state'     => array
         (
             'type'      => 'tinyint-1',
@@ -254,6 +268,7 @@ return array
                 'state' => 1,
             ),
             'type' => 'all',
+            'order' => array('reorder' => 'desc', 'id' => 'desc'),
             'col' => 'id,short_name as name,area,type,price',
         ),
     ),