diff --git a/addon/fenxiao/event/NodeParent.php b/addon/fenxiao/event/NodeParent.php index c2df47d..f13cc4d 100644 --- a/addon/fenxiao/event/NodeParent.php +++ b/addon/fenxiao/event/NodeParent.php @@ -7,6 +7,7 @@ class NodeParent { if (isset($param['parent'])) { $parentInfo = model('fenxiao')->getInfo(['fenxiao_id' => $param['parent']], 'fenxiao_id,fenxiao_name,parent,chain,depth_level'); + if ($parentInfo) { $Parent['chain'] = $parentInfo['chain'] . $param['fenxiao_id'] . ','; $Parent['depth_level'] = $parentInfo['depth_level'] + 1; @@ -14,6 +15,7 @@ class NodeParent $Parent['chain'] = $param['fenxiao_id'] . ','; $Parent['depth_level'] = 1; } + return $Parent; } if (isset($param['fenxiao_id'])) { diff --git a/addon/fenxiao/model/Config.php b/addon/fenxiao/model/Config.php index 3e1cad8..3285a2b 100644 --- a/addon/fenxiao/model/Config.php +++ b/addon/fenxiao/model/Config.php @@ -40,6 +40,7 @@ class Config extends BaseModel 'is_support_cashier' => $data[ 'is_support_cashier' ],//是否开启商品详情一级佣金 'direct_rate' => $data[ 'direct_rate' ],//默认直推 'indirect_rate' => $data[ 'indirect_rate' ],//默认间推 + 'founder_rate' => $data[ 'founder_rate' ],//默认间推 ]; $config->setConfig($basics_data, '分销基本配置', $is_use, [ [ 'site_id', '=', $site_id ], [ 'app_module', '=', 'shop' ], [ 'config_key', '=', 'FENXIAO_BASICS_CONFIG' ] ]); //分销商设置 @@ -83,6 +84,7 @@ class Config extends BaseModel 'is_apply' => 0,//分销商申请方式 'direct_rate' => 0,//是否开启商品详情一级佣金 'indirect_rate' => 0,//是否开启商品详情一级佣金 + 'founder_rate' => 0,//是否开启商品详情一级佣金 ]; } $res[ 'data' ][ 'value' ][ 'is_commission_money' ] = $res[ 'data' ][ 'value' ][ 'is_commission_money' ] ?? 1; @@ -92,6 +94,7 @@ class Config extends BaseModel $res[ 'data' ][ 'value' ][ 'is_support_cashier' ] = $res[ 'data' ][ 'value' ][ 'is_support_cashier' ] ?? 0; $res[ 'data' ][ 'value' ][ 'direct_rate' ] = $res[ 'data' ][ 'value' ][ 'direct_rate' ] ?? 0; $res[ 'data' ][ 'value' ][ 'indirect_rate' ] = $res[ 'data' ][ 'value' ][ 'indirect_rate' ] ?? 0; + $res[ 'data' ][ 'value' ][ 'founder_rate' ] = $res[ 'data' ][ 'value' ][ 'founder_rate' ] ?? 0; return $res; } diff --git a/addon/fenxiao/model/Fenxiao.php b/addon/fenxiao/model/Fenxiao.php index 952e238..c9e92ba 100644 --- a/addon/fenxiao/model/Fenxiao.php +++ b/addon/fenxiao/model/Fenxiao.php @@ -61,11 +61,14 @@ class Fenxiao extends BaseModel 'fenxiao_id' => $data[ 'parent' ] ]); } + $res = model('fenxiao')->add($data); + $data['fenxiao_id'] = $res; $nodeInfo = event('NodeParent', $data, true); if ($nodeInfo) { model('fenxiao')->update($nodeInfo, [['fenxiao_id', '=', $res]]); } + //修改会员信息 model('member')->update([ 'fenxiao_id' => $res, 'is_fenxiao' => 1 ], [ [ 'member_id', '=', $data[ 'member_id' ] ] ]); $stat_model = new Stat(); @@ -366,7 +369,6 @@ class Fenxiao extends BaseModel $member_info = model('member')->getInfo([ [ 'member_id', '=', $member_id ], [ 'site_id', '=', $site_id ], [ 'is_delete', '=', 0 ] ], 'order_num,order_complete_num,order_money,order_complete_money,is_fenxiao'); if (empty($member_info)) return $this->error('', '未查询到会员信息'); $fenxiao_info = $this->getFenxiaoDetailInfo([ [ 'f.member_id', '=', $member_id ] ])[ 'data' ]; - if (!empty($fenxiao_info) && $member_info[ 'is_fenxiao' ]) return $this->error('', '已经是分销商'); try { $config = new Config(); @@ -416,6 +418,7 @@ class Fenxiao extends BaseModel //获取用户信息 $member_field = 'member_id,site_id,source_member,fenxiao_id,nickname,headimg,mobile,reg_time,order_money,order_complete_money,order_num,order_complete_num'; $member_info = model('member')->getInfo([ [ 'member_id', '=', $member_id ] ], $member_field); + if (!empty($member_info)) { $parent = 0; if (!empty($member_info[ 'source_member' ])) { diff --git a/addon/fenxiao/model/FenxiaoOrder.php b/addon/fenxiao/model/FenxiaoOrder.php index 2926bb5..977568e 100644 --- a/addon/fenxiao/model/FenxiaoOrder.php +++ b/addon/fenxiao/model/FenxiaoOrder.php @@ -28,7 +28,6 @@ class FenxiaoOrder extends BaseModel //获取分销基础配置 $config_model = new Config(); $fenxiao_basic_config = $config_model->getFenxiaoBasicsConfig($order[ 'site_id' ])[ 'data' ][ 'value' ]; - if (!$fenxiao_basic_config['level']) return $this->success(); // //检测分销商上级关系 $member_info = model("member")->getInfo([ [ 'member_id', '=', $order[ 'member_id' ] ] ], 'fenxiao_id,is_fenxiao,nickname,mobile'); @@ -40,7 +39,6 @@ class FenxiaoOrder extends BaseModel ]); $member_info = model("member")->getInfo([ [ 'member_id', '=', $order[ 'member_id' ] ] ], 'fenxiao_id,is_fenxiao,nickname,mobile'); } - // //如果没有分销商直接返回不计算,没有考虑首次付款上下级绑定 if (empty($member_info)) return $this->success(); if ($member_info[ 'fenxiao_id' ] == 0) return $this->success(); @@ -61,7 +59,7 @@ class FenxiaoOrder extends BaseModel // //判断几级分销 // $parent_fenxiao_info = $level_config >= 2 ? model('fenxiao')->getInfo([ [ 'fenxiao_id', '=', $fenxiao_info[ 'parent' ] ], [ 'is_delete', '=', 0 ] ], 'fenxiao_id, fenxiao_name, status, parent') : []; // $grand_parent_fenxiao_info = $level_config >= 3 && !empty($parent_fenxiao_info[ 'parent' ]) ? model('fenxiao')->getInfo([ [ 'fenxiao_id', '=', $parent_fenxiao_info[ 'parent' ] ], [ 'is_delete', '=', 0 ] ], 'fenxiao_id, fenxiao_name, status') : []; - $order_goods = model('order_goods')->getList([ [ 'order_id', '=', $order[ 'order_id' ] ], [ 'is_fenxiao', '=', 1 ] ], 'order_goods_id, goods_id, sku_id, sku_name, sku_image, sku_no, is_virtual, price, cost_price, num, goods_money, cost_money, delivery_no, delivery_status, real_goods_money'); + $order_goods = model('order_goods')->getList([ [ 'order_id', '=', $order[ 'order_id' ] ], [ 'is_fenxiao', '=', 1 ] ], 'order_goods_id, goods_id , site_id, sku_id, sku_name, sku_image, sku_no, is_virtual, price, cost_price, num, goods_money, cost_money, delivery_no, delivery_status, real_goods_money'); if (empty($order_goods)) return $this->success(); model('fenxiao_order')->delete([ [ 'order_id', '=', $order[ 'order_id' ] ] ]); @@ -81,75 +79,79 @@ class FenxiaoOrder extends BaseModel 'wholesale_rate' => 0, 'wholesale_commission' => 0, 'wholesale_fenxiao_detail' => [], + 'founder_fenxiao_id' => [], + 'founder_rate' => 0, + 'founder_commission' => 0, + 'founder_fenxiao_detail' => [], ]; - $goods_info = model('goods')->getInfo([['goods_id','=',$v['goods_id']]],'is_fenxiao, fenxiao_type'); - //参与了分销商品,有直推间推奖励 - if($goods_info['is_fenxiao']){ + $goods_info = model('goods')->getInfo([['goods_id','=',$v['goods_id']]],'is_fenxiao, fenxiao_type,goods_kind_id'); + //报单商品才有直推和间推 + if($goods_info['goods_kind_id']){ $order_fenxiao_data = $this->getPushFenXiaoCommission($fenxiao_info,$v,$order_fenxiao_data,$goods_info['fenxiao_type'],$fenxiao_basic_config); } - - $order_fenxiao_data = $this->getWholesaleFenXiaoCommission($fenxiao_info,$v,$order_fenxiao_data); - // dump($order_fenxiao_data);die; - $data = [ - 'order_id' => $order['order_id'], - 'order_no' => $order['order_no'], - 'order_goods_id' => $v['order_goods_id'], - 'site_id' => $order['site_id'], - 'site_name' => $order['site_name'], - 'goods_id' => $v['goods_id'], - 'sku_id' => $v['sku_id'], - 'sku_name' => $v['sku_name'], - 'sku_image' => $v['sku_image'], - 'price' => $v['price'], - 'num' => $v['num'], - 'real_goods_money' => $v['real_goods_money'], - 'member_id' => $order['member_id'], - 'member_name' => !empty($order['name']) ? $order['name'] : $member_info['nickname'], - 'member_mobile' => !empty($order['mobile']) ? $order['mobile'] : $member_info['mobile'], - 'full_address' => $order['full_address'].$order['address'], - 'commission' => $order_fenxiao_data['commission'], - 'commission_rate' => $order_fenxiao_data['commission_rate'], - 'one_fenxiao_id' => $order_fenxiao_data['one_fenxiao_id'], - 'one_rate' => $order_fenxiao_data['one_rate'], - 'one_commission' => $order_fenxiao_data['one_commission'], - 'one_fenxiao_name' => $order_fenxiao_data['one_fenxiao_name'], - 'two_fenxiao_id' => $order_fenxiao_data['two_fenxiao_id'], - 'two_rate' => $order_fenxiao_data['two_rate'], - 'two_commission' => $order_fenxiao_data['two_commission'], - 'two_fenxiao_name' => $order_fenxiao_data['two_fenxiao_name'], - 'wholesale_fenxiao_id' => json_encode($order_fenxiao_data['wholesale_fenxiao_id']), - 'wholesale_rate' => $order_fenxiao_data['wholesale_rate'], - 'wholesale_commission' => $order_fenxiao_data['wholesale_commission'], - 'wholesale_fenxiao_detail' => json_encode($order_fenxiao_data['wholesale_fenxiao_detail']), - 'create_time' => time() - ]; - model("fenxiao_order")->add($data); + $order_fenxiao_data = $this->getWholesaleFenXiaoCommission($fenxiao_info,$v,$order_fenxiao_data,$goods_info['fenxiao_type'],$fenxiao_basic_config,$goods_info['goods_kind_id']); + if($order_fenxiao_data['commission'] && $order_fenxiao_data['commission_rate']){ + $data = [ + 'order_id' => $order['order_id'], + 'order_no' => $order['order_no'], + 'order_goods_id' => $v['order_goods_id'], + 'site_id' => $order['site_id'], + 'site_name' => $order['site_name'], + 'goods_id' => $v['goods_id'], + 'sku_id' => $v['sku_id'], + 'sku_name' => $v['sku_name'], + 'sku_image' => $v['sku_image'], + 'price' => $v['price'], + 'num' => $v['num'], + 'real_goods_money' => $v['real_goods_money'], + 'member_id' => $order['member_id'], + 'member_name' => !empty($order['name']) ? $order['name'] : $member_info['nickname'], + 'member_mobile' => !empty($order['mobile']) ? $order['mobile'] : $member_info['mobile'], + 'full_address' => $order['full_address'].$order['address'], + 'commission' => $order_fenxiao_data['commission'], + 'commission_rate' => $order_fenxiao_data['commission_rate'], + 'one_fenxiao_id' => $order_fenxiao_data['one_fenxiao_id'], + 'one_rate' => $order_fenxiao_data['one_rate'], + 'one_commission' => $order_fenxiao_data['one_commission'], + 'one_fenxiao_name' => $order_fenxiao_data['one_fenxiao_name'], + 'two_fenxiao_id' => $order_fenxiao_data['two_fenxiao_id'], + 'two_rate' => $order_fenxiao_data['two_rate'], + 'two_commission' => $order_fenxiao_data['two_commission'], + 'two_fenxiao_name' => $order_fenxiao_data['two_fenxiao_name'], + 'wholesale_fenxiao_id' => json_encode($order_fenxiao_data['wholesale_fenxiao_id']), + 'wholesale_rate' => $order_fenxiao_data['wholesale_rate'], + 'wholesale_commission' => $order_fenxiao_data['wholesale_commission'], + 'wholesale_fenxiao_detail' => json_encode($order_fenxiao_data['wholesale_fenxiao_detail']), + 'founder_fenxiao_id' => json_encode($order_fenxiao_data['founder_fenxiao_id']), + 'founder_rate' => $order_fenxiao_data['founder_rate'], + 'founder_commission' => $order_fenxiao_data['founder_commission'], + 'founder_fenxiao_detail' => json_encode($order_fenxiao_data['founder_fenxiao_detail']), + 'create_time' => time() + ]; + model("fenxiao_order")->add($data); + } } - $fenxiao_info = model("fenxiao")->getInfo([ [ 'fenxiao_id', '=', $fenxiao_id ], [ 'is_delete', '=', 0 ] ]); // // 分销商检测升级 event('FenxiaoUpgrade', [ - 'fenxiao_id' => $member_info[ 'fenxiao_id' ] + 'fenxiao_id' => $member_info[ 'fenxiao_id' ], ]); return $this->success(); } private function getPushFenXiaoCommission($fenxiao_info,$v,&$order_fenxiao_data,$type,$config){ - if($type == 2){ - $fenxiao_level = model('fenxiao_goods_sku')->getInfo([ [ 'goods_id', '=', $v[ 'goods_id' ] ], [ 'sku_id', '=', $v[ 'sku_id' ] ], [ 'level_id', '=', $fenxiao_info[ 'level_id' ] ] ]); - if (empty($fenxiao_level)) return false; - $one_rate = $fenxiao_level['direct_rate']; - $one_money = $fenxiao_level['direct_money']; - $two_rate = $fenxiao_level['indirect_rate']; - $two_money = $fenxiao_level['indirect_money']; - }else{ - $one_rate = $config['direct_rate']; - $two_rate = $config['indirect_rate']; - $one_money = $two_money = 0; - } - $parent_fenxiao_info = $fenxiao_info['parent'] > 0 ? model('fenxiao')->getInfo([ [ 'fenxiao_id', '=', $fenxiao_info[ 'parent' ] ], [ 'is_delete', '=', 0 ] ], 'fenxiao_id, fenxiao_name, status, parent') : []; - $g_parent_fenxiao_info = $fenxiao_info['grand_parent'] > 0 ? model('fenxiao')->getInfo([ [ 'fenxiao_id', '=', $fenxiao_info[ 'grand_parent' ] ], [ 'is_delete', '=', 0 ] ], 'fenxiao_id, fenxiao_name, status, parent') : []; + $one_rate = $config['direct_rate']; + $two_rate = $config['indirect_rate']; + $one_money = $two_money = 0; + $parent_fenxiao_info = $fenxiao_info['parent'] > 0 ? model('fenxiao')->getInfo([ [ 'fenxiao_id', '=', $fenxiao_info[ 'parent' ] ], [ 'is_delete', '=', 0 ] ], 'fenxiao_id, fenxiao_name, status, parent,level_id') : []; + $g_parent_fenxiao_info = $fenxiao_info['grand_parent'] > 0 ? model('fenxiao')->getInfo([ [ 'fenxiao_id', '=', $fenxiao_info[ 'grand_parent' ] ], [ 'is_delete', '=', 0 ] ], 'fenxiao_id, fenxiao_name, status, parent,level_id') : []; if (!empty($parent_fenxiao_info) && $parent_fenxiao_info[ 'status' ] == 1) { + if($type == 2){ + $fenxiao_level = model('fenxiao_goods_sku')->getInfo([ [ 'goods_id', '=', $v[ 'goods_id' ] ], [ 'sku_id', '=', $v[ 'sku_id' ] ], [ 'level_id', '=', $parent_fenxiao_info[ 'level_id' ] ] ]); + if (empty($fenxiao_level)) return false; + $one_rate = $fenxiao_level['direct_rate']; + $one_money = $fenxiao_level['direct_money']; + } if ($one_rate > 0) { $order_fenxiao_data['commission_rate'] += $order_fenxiao_data[ 'one_rate' ] = $one_rate; $order_fenxiao_data['commission'] += $order_fenxiao_data[ 'one_commission' ] = $one_rate * $v[ 'real_goods_money' ] / 100; @@ -161,7 +163,12 @@ class FenxiaoOrder extends BaseModel $order_fenxiao_data['one_fenxiao_name'] = $parent_fenxiao_info['fenxiao_name']; } if (!empty($g_parent_fenxiao_info) && $g_parent_fenxiao_info[ 'status' ] == 1) { - + if($type == 2){ + $fenxiao_level = model('fenxiao_goods_sku')->getInfo([ [ 'goods_id', '=', $v[ 'goods_id' ] ], [ 'sku_id', '=', $v[ 'sku_id' ] ], [ 'level_id', '=', $g_parent_fenxiao_info[ 'level_id' ] ] ]); + if (empty($fenxiao_level)) return false; + $two_rate = $fenxiao_level['indirect_rate']; + $two_money = $fenxiao_level['indirect_money']; + } if ($two_rate > 0) { $order_fenxiao_data['commission_rate'] += $order_fenxiao_data[ 'two_rate' ] = $two_rate; $order_fenxiao_data['commission'] += $order_fenxiao_data[ 'two_commission' ] = $two_rate * $v[ 'real_goods_money' ] / 100; @@ -176,23 +183,27 @@ class FenxiaoOrder extends BaseModel return $order_fenxiao_data; } - private function getWholesaleFenXiaoCommission($fenxiao_info,$v,&$order_fenxiao_data){ - $order_fenxiao_data['wholesale_fenxiao_id'][] = $fenxiao_info['fenxiao_id']; - $order_fenxiao_data['commission_rate'] += $order_fenxiao_data[ 'wholesale_rate' ] = $fenxiao_info[ 'one_rate' ]; - $commission = $fenxiao_info[ 'one_rate' ] * $v[ 'real_goods_money' ] / 100; - $order_fenxiao_data['commission'] += $order_fenxiao_data[ 'wholesale_commission' ] = $commission; - $order_fenxiao_data['wholesale_fenxiao_detail'][] = ['name' => $fenxiao_info['fenxiao_name'], 'commission' => $commission]; - $level_List = model('fenxiao_level')->getList([['site_id', '=' ,$fenxiao_info['site_id']],['level_num' , '>' ,$fenxiao_info['level_num']]],'*','level_num asc'); - if($fenxiao_info['chain'] && $level_List){ + private function getWholesaleFenXiaoCommission($fenxiao_info,$v,&$order_fenxiao_data,$type,$config,$goods_kind = 0){ + //不是报单商品才有自购 + if($config['self_purchase_rebate'] && $fenxiao_info['level_num'] > 0 && $goods_kind === 1){ + $order_fenxiao_data['wholesale_fenxiao_id'][] = $fenxiao_info['fenxiao_id']; + $order_fenxiao_data['commission_rate'] += $order_fenxiao_data[ 'wholesale_rate' ] = $fenxiao_info[ 'one_rate' ]; + $commission = $fenxiao_info[ 'one_rate' ] * $v[ 'real_goods_money' ] / 100; + $order_fenxiao_data['commission'] += $order_fenxiao_data[ 'wholesale_commission' ] = $commission; + $order_fenxiao_data['wholesale_fenxiao_detail'][] = ['name' => $fenxiao_info['fenxiao_name'], 'commission' => $commission]; + } + if($fenxiao_info['chain']){ $data = explode(',', $fenxiao_info['chain']); $chain = array_filter($data, function ($value) { return !empty($value); }); - // $count = count($chain); - // //要删除最后一个数据,最后一个数据是自己的分销商ID - // //因为逗号分割去除空白后最后一个key会被去掉,所以count不需要 - 1; - // unset($chain[$count]); + $count = count($chain); + + //要删除最后一个数据,最后一个数据是自己的分销商ID + unset($chain[$count - 1]); $chain = array_values($chain); + $chain = array_reverse($chain); + $nodeUser = Db::name('fenxiao') ->where('f.is_delete', '=', 0) ->alias('f') @@ -203,23 +214,68 @@ class FenxiaoOrder extends BaseModel ->select(); //获取上级用户 $nodeUser = $nodeUser ? $nodeUser->toArray() : []; if(count($nodeUser) > 0){ - $order_fenxiao_data = $this->getWholesaleCommission($nodeUser,$v,$order_fenxiao_data,$level_List); + $order_fenxiao_data = $this->getWholesaleCommission($nodeUser,$v,$order_fenxiao_data,$chain,$fenxiao_info['level_num'] + 1,$type,$config,$goods_kind); + } + } + + return $order_fenxiao_data; + } + + protected function getWholesaleCommission($nodeUser,$v,&$order_fenxiao_data,$chain,$leve_num,$type,$config,$goods_kind){ + //不考虑商品单独规则 + $fenxiao_user_id = array_column($nodeUser,'fenxiao_id'); + $max_level_num = (int)model('fenxiao_level')->stat([['site_id' ,'=' , $v['site_id']]],'max','level_num'); + foreach($chain as $k => $value){ + $key = array_search($value,$fenxiao_user_id); + $user = $nodeUser[$key]; + if(isset($user) && !empty($user) && $user['level_num'] == $leve_num && $leve_num > 1){ + $order_fenxiao_data['wholesale_fenxiao_id'][] = $user['fenxiao_id']; + $order_fenxiao_data['commission_rate'] += $order_fenxiao_data[ 'wholesale_rate' ] += $user[ 'two_rate' ]; + $commission = $user[ 'two_rate' ] * $v[ 'real_goods_money' ] / 100; + $order_fenxiao_data['commission'] += $order_fenxiao_data[ 'wholesale_commission' ] += $commission; + $order_fenxiao_data['wholesale_fenxiao_detail'][] = ['name' => $user['fenxiao_name'], 'commission' => $commission]; + ++$leve_num; + } + //联合创始人分红 + if(isset($user) && !empty($user) && $max_level_num == $user['level_num'] && $config['founder_rate'] && $goods_kind === 0){ + $order_fenxiao_data['founder_fenxiao_id'][] = $user['fenxiao_id']; + $order_fenxiao_data['commission_rate'] += $order_fenxiao_data[ 'founder_rate' ] += $config['founder_rate']; + $commission = $config['founder_rate'] * $v[ 'real_goods_money' ] / 100; + $order_fenxiao_data['commission'] += $order_fenxiao_data[ 'founder_commission' ] += $commission; + $order_fenxiao_data['founder_fenxiao_detail'][] = ['name' => $user['fenxiao_name'], 'commission' => $commission]; } } return $order_fenxiao_data; } - protected function getWholesaleCommission($nodeUser,$v,&$order_fenxiao_data,$level_List){ + protected function getWholesaleCommissions($nodeUser,$v,&$order_fenxiao_data,$chain,$leve_num,$type,$config){ //不考虑商品单独规则 - $fenxiao_user_level_num = array_column($nodeUser,'level_num'); - foreach($level_List as $key => $val){ - $search = array_search($val['level_num'],$fenxiao_user_level_num); - if($search){ - $order_fenxiao_data['wholesale_fenxiao_id'][] = $nodeUser[$search]['fenxiao_id']; - $order_fenxiao_data['commission_rate'] += $order_fenxiao_data[ 'wholesale_rate' ] += $val[ 'two_rate' ]; - $commission = $val[ 'two_rate' ] * $v[ 'real_goods_money' ] / 100; + $fenxiao_user_id = array_column($nodeUser,'fenxiao_id'); + $max_level_num = (int)model('fenxiao_level')->stat([['site_id' ,'=' , $v['site_id']]],'max','level_num'); + foreach($chain as $k => $value){ + $key = array_search($value,$fenxiao_user_id); + $user = $nodeUser[$key]; + if(isset($user) && !empty($user) && $user['level_num'] == $leve_num && $leve_num > 1){ + //独立设置的佣金 + if($type == 2){ + + }else{ + + } + $order_fenxiao_data['wholesale_fenxiao_id'][] = $user['fenxiao_id']; + $order_fenxiao_data['commission_rate'] += $order_fenxiao_data[ 'wholesale_rate' ] += $user[ 'two_rate' ]; + $commission = $user[ 'two_rate' ] * $v[ 'real_goods_money' ] / 100; $order_fenxiao_data['commission'] += $order_fenxiao_data[ 'wholesale_commission' ] += $commission; - $order_fenxiao_data['wholesale_fenxiao_detail'][] = ['name' => $nodeUser[$search]['fenxiao_name'], 'commission' => $commission]; + $order_fenxiao_data['wholesale_fenxiao_detail'][] = ['name' => $user['fenxiao_name'], 'commission' => $commission]; + ++$leve_num; + } + //联合创始人分红 + if(isset($user) && !empty($user) && $max_level_num == $user['level_num'] && $config['founder_rate']){ + $order_fenxiao_data['founder_fenxiao_id'][] = $user['fenxiao_id']; + $order_fenxiao_data['commission_rate'] += $order_fenxiao_data[ 'founder_rate' ] += $config['founder_rate']; + $commission = $config['founder_rate'] * $v[ 'real_goods_money' ] / 100; + $order_fenxiao_data['commission'] += $order_fenxiao_data[ 'founder_commission' ] += $commission; + $order_fenxiao_data['founder_fenxiao_detail'][] = ['name' => $user['fenxiao_name'], 'commission' => $commission]; } } return $order_fenxiao_data; diff --git a/addon/fenxiao/shop/controller/Config.php b/addon/fenxiao/shop/controller/Config.php index aa94272..7f9c760 100644 --- a/addon/fenxiao/shop/controller/Config.php +++ b/addon/fenxiao/shop/controller/Config.php @@ -51,6 +51,7 @@ class Config extends BaseShop 'three_rate' => input('three_rate', 0.00), 'direct_rate' => input('direct_rate', 0.00), 'indirect_rate' => input('indirect_rate', 0.00), + 'founder_rate' => input('founder_rate', 0.00), 'is_support_cashier' => input('is_support_cashier', 0) ]; diff --git a/addon/fenxiao/shop/view/config/basics.html b/addon/fenxiao/shop/view/config/basics.html index 2161d28..9277fef 100644 --- a/addon/fenxiao/shop/view/config/basics.html +++ b/addon/fenxiao/shop/view/config/basics.html @@ -225,19 +225,31 @@

会员购买后给对应分销商的默认直推返佣比例

-
-
- -
- +
+
+ +
+ +
+
%
+
+
+

会员购买后给对应分销商的默认间推返佣比例

-
%
-
-

会员购买后给对应分销商的默认间推返佣比例

+
+
+ +
+ +
+
%
+
+
+

会员购买后给上级创始人分销商的分红比例

+
-
diff --git a/addon/fenxiao/shop/view/public/js/order_list.js b/addon/fenxiao/shop/view/public/js/order_list.js index a719c66..059d759 100644 --- a/addon/fenxiao/shop/view/public/js/order_list.js +++ b/addon/fenxiao/shop/view/public/js/order_list.js @@ -115,7 +115,19 @@ Order.prototype.cols = [ } } }else{ - html += '
上级分佣:'+ ' ¥--' +'
'; + html += '
进货分佣:'+ ' ¥--' +'
'; + } + if(orderitem.founder_commission > 0){ + var array_detail = $.parseJSON(orderitem.founder_fenxiao_detail); + for(var i=0;i 0 ? array_detail[i].name +' ¥' + array_detail[i].commission : '--') +'
'; + }else{ + html += '
'+ (array_detail[i].commission > 0 ? array_detail[i].name +' ¥' + array_detail[i].commission : '--') +'
'; + } + } + }else{ + html += '
创始人分佣:'+ ' ¥--' +'
'; } return html; } diff --git a/app/event/DiyViewEdit.php b/app/event/DiyViewEdit.php index d35ca16..ae1f79e 100644 --- a/app/event/DiyViewEdit.php +++ b/app/event/DiyViewEdit.php @@ -42,17 +42,19 @@ class DiyViewEdit extends Controller } if (!empty($data[ 'id' ]) || !empty($data[ 'name' ])) { - if($data['copy']){ - $site_id = $data[ 'site_id' ]; - $site_agent_id = model('site')->getValue([['site_id' , '=' , $site_id]],'agent_id'); + $site_id = $data[ 'site_id' ]; + $site_agent_id = model('site')->getValue([['site_id' , '=' , $site_id]],'agent_id'); + if(isset($data['copy']) && $data['copy']){ $diy_view_condition = [ [ 'site_id', '=', $site_agent_id ], ]; }else{ $diy_view_condition = [ - [ 'site_id', '=', $data[ 'site_id' ] ], + [ 'site_id', '=', $site_id ], ]; } + $is_copy = $site_agent_id ? 1 : 0; + $this->assign("is_copy", $is_copy); if (!empty($data[ 'id' ])) { diff --git a/app/model/goods/Goods.php b/app/model/goods/Goods.php index 3f63216..1dc352b 100644 --- a/app/model/goods/Goods.php +++ b/app/model/goods/Goods.php @@ -115,6 +115,7 @@ class Goods extends BaseModel 'site_id' => $data['site_id'], 'goods_content' => $data['goods_content'], 'goods_state' => $data['goods_state'], + 'goods_kind_id' => $data['goods_kind_id'], 'goods_stock_alarm' => $data['goods_stock_alarm'], 'is_free_shipping' => $data['is_free_shipping'], 'shipping_template' => $data['shipping_template'], @@ -284,6 +285,7 @@ class Goods extends BaseModel 'site_id' => $data['site_id'], 'goods_content' => $data['goods_content'], 'goods_state' => $data['goods_state'], + 'goods_kind_id' => $data['goods_kind_id'], 'goods_stock_alarm' => $data['goods_stock_alarm'], 'is_free_shipping' => $data['is_free_shipping'], 'shipping_template' => $data['shipping_template'], @@ -1093,7 +1095,7 @@ class Goods extends BaseModel * @param string $order * @param string $field */ - public function getGoodsPageList($condition = [], $page = 1, $page_size = PAGE_LIST_ROWS, $order = 'a.create_time desc', $field = 'a.goods_id,a.goods_name,a.site_id,a.site_name,a.goods_image,a.goods_state,a.price,a.goods_stock,a.goods_stock_alarm,a.create_time,a.sale_num,a.is_virtual,a.goods_class,a.goods_class_name,a.is_fenxiao,a.fenxiao_type,a.promotion_addon,a.sku_id,a.is_consume_discount,a.discount_config,a.discount_method,a.sort,a.label_id,a.is_delete', $alias = 'a', $join = []) + public function getGoodsPageList($condition = [], $page = 1, $page_size = PAGE_LIST_ROWS, $order = 'a.create_time desc', $field = 'a.goods_id,a.goods_name,a.site_id,a.site_name,a.goods_image,a.goods_state,a.price,a.goods_stock,a.goods_stock_alarm,a.create_time,a.sale_num,a.is_virtual,a.goods_class,a.goods_class_name,a.goods_kind_id,a.is_fenxiao,a.fenxiao_type,a.promotion_addon,a.sku_id,a.is_consume_discount,a.discount_config,a.discount_method,a.sort,a.label_id,a.is_delete', $alias = 'a', $join = []) { $res = model('goods')->pageList($condition, $field, $order, $page, $page_size, $alias, $join); foreach ($res['list'] as $k => $v) { @@ -1112,6 +1114,7 @@ class Goods extends BaseModel if (isset($v['real_stock'])) { $res['list'][$k]['real_stock'] = numberFormat($res['list'][$k]['real_stock']); } + $res['list'][$k]['goods_kind_name'] = $res['list'][$k]['goods_kind_id'] ? '报单商品' : '进货商品'; } return $this->success($res); } diff --git a/app/pay/controller/Test.php b/app/pay/controller/Test.php index 5355130..7c5feb9 100644 --- a/app/pay/controller/Test.php +++ b/app/pay/controller/Test.php @@ -24,11 +24,12 @@ class Test{ // public function test(){ - $orderId = 19; + $orderId = 37; $order_info = model('order')->getInfo(['order_id' => $orderId]); + // $fenxiao_order = new OrderPay(); + // $res = $fenxiao_order->handle($order_info); $fenxiao_order = new FenxiaoOrder(); $res = $fenxiao_order->calculate($order_info); - dump($res);die; // $memberId = 21; // (new Commission())->commissionHandleInit($orderId, $memberId); diff --git a/app/shop/controller/Goods.php b/app/shop/controller/Goods.php index 9181f37..1e70938 100644 --- a/app/shop/controller/Goods.php +++ b/app/shop/controller/Goods.php @@ -133,7 +133,7 @@ class Goods extends BaseShop $order_by = $order . ' ' . $sort; } } - $field = 'goods_id,goods_name,site_id,site_name,goods_image,goods_state,price,goods_stock,goods_stock_alarm,create_time,sale_num,is_virtual,goods_class,goods_class_name,is_fenxiao,fenxiao_type,promotion_addon,sku_id,is_consume_discount,is_zmxx,discount_config,discount_method,sort,label_id,is_delete,label_name,virtual_deliver_type'; + $field = 'goods_id,goods_name,site_id,site_name,goods_image,goods_state,price,goods_stock,goods_stock_alarm,create_time,goods_kind_id,sale_num,is_virtual,goods_class,goods_class_name,is_fenxiao,fenxiao_type,promotion_addon,sku_id,is_consume_discount,is_zmxx,discount_config,discount_method,sort,label_id,is_delete,label_name,virtual_deliver_type'; $res = $goods_model->getGoodsPageList($condition, $page_index, $page_size, $order_by, $field); $goods_promotion_type = event('GoodsPromotionType'); if (!empty($res['data']['list'])) { @@ -260,6 +260,7 @@ class Goods extends BaseShop 'goods_image' => input("goods_image", ""),// 商品主图路径 'goods_content' => input("goods_content", ""),// 商品详情 'goods_state' => input("goods_state", ""),// 商品状态(1.正常0下架) + 'goods_kind_id' => input("goods_kind_id", ""),// 商品种类(1.报单0进货) 'price' => input("price", 0),// 商品价格(取第一个sku) 'market_price' => input("market_price", 0),// 市场价格(取第一个sku) 'cost_price' => input("cost_price", 0),// 成本价(取第一个sku) @@ -425,6 +426,7 @@ class Goods extends BaseShop 'goods_image' => input("goods_image",""),// 商品主图路径 'goods_content' => input("goods_content",""),// 商品详情 'goods_state' => input("goods_state",""),// 商品状态(1.正常0下架) + 'goods_kind_id' => input("goods_kind_id", ""),// 商品种类(1.报单0进货) 'price' => input("price",0),// 商品价格(取第一个sku) 'market_price' => input("market_price",0),// 市场价格(取第一个sku) 'cost_price' => input("cost_price",0),// 成本价(取第一个sku) diff --git a/app/shop/view/goods/add_goods.html b/app/shop/view/goods/add_goods.html index b67675a..bffb523 100644 --- a/app/shop/view/goods/add_goods.html +++ b/app/shop/view/goods/add_goods.html @@ -239,6 +239,13 @@ +
+ +
+ + +
+
diff --git a/app/shop/view/goods/edit_goods.html b/app/shop/view/goods/edit_goods.html index 36e1cda..0413df3 100644 --- a/app/shop/view/goods/edit_goods.html +++ b/app/shop/view/goods/edit_goods.html @@ -216,7 +216,13 @@
{/if} - +
+ +
+ + +
+
diff --git a/app/shop/view/goods/lists.html b/app/shop/view/goods/lists.html index b07067c..e10bd67 100644 --- a/app/shop/view/goods/lists.html +++ b/app/shop/view/goods/lists.html @@ -190,6 +190,7 @@ {{d.goods_name}} {/if} {{ d.goods_class_name }} + {{ d.goods_kind_name }} {{# if(d.promotion_addon && d.promotion_addon_list){ }} {{# for(var i=0;i