$orderNo ])->find(); if(!$order){ return false; } $this->addLog($order); return true; } /** * 添加记录 * @param $order * @return false|void */ public function addLog($order){ $agentConfig = \app\common\model\app\Config::getConfig('agent'); $orderUserRelation = [ 'parent'=>false, 'grandpa'=>false ]; if($order->source == 'channels'){ //获取视频号分享员信息 if(!\app\admin\library\project\App::isInstall('channels')){ return false; } $channelsOrder = (new \app\admin\model\app\channels\Order())->getOrderDetail($order->order_no); if(!$channelsOrder || !$channelsOrder->member || !$channelsOrder->member->user_id || $channelsOrder->member->status != 1){ return false; } $orderUserRelation['parent']['parent_id'] = $channelsOrder->member->user_id; if($orderUserRelation['parent']['parent_id']){ $orderUserRelation['grandpa'] = \app\common\model\app\agent\Relation::getParentUser($channelsOrder->member->user_id); } }else{ //找该下单用户的上级关系 $orderUserRelation = \app\common\model\app\agent\Relation::getUserRelation($order->user_id); if(!$orderUserRelation['parent'] && !$orderUserRelation['grandpa']){ return false; } } //计算佣金 $orderItemList = (new Item())->getItemList($order->order_no); if(!empty($orderItemList)){ foreach ($orderItemList as $orderItem){ //找该下单用户的上级 商品佣金 try{ if($orderUserRelation['parent']){ $parentProp = Goods::getUserGoodsProp($orderUserRelation['parent']['parent_id'],$orderItem['item_id'],$orderItem['goods_type'],$orderItem['total_price']); if($parentProp){ $data = [ 'uniacid'=>UNIACID, 'order_user_id'=>$order->user_id, 'beneficiary_user_id'=>$orderUserRelation['parent']['parent_id'], 'order_no'=>$order->order_no, 'goods_id'=>$orderItem['item_id'], 'goods_type'=>$orderItem['goods_type'], 'price'=>$orderItem['real_price'], 'order_item_id'=>$orderItem['id'], 'brokerage_price'=>$parentProp['price']['goods'],// 'brokerage_prop'=>$parentProp['prop']['goods'], 'type'=>'commission', 'mode'=>$parentProp['mode'], 'status'=>0, 'createtime'=>time() ]; AgentOrder::insert($data); } } if($agentConfig['mode'] == 2 && $orderUserRelation['grandpa']){ //继续分佣 找该下单用户的上级的上级 下级分销员卖货提成 $grandpaProp = Goods::getUserGoodsProp($orderUserRelation['grandpa']['parent_id'],$orderItem['item_id'],$orderItem['goods_type'],$orderItem['real_price']); if($grandpaProp){ $data = [ 'uniacid'=>UNIACID, 'order_user_id'=>$order->user_id, 'beneficiary_user_id'=>$orderUserRelation['grandpa']['parent_id'], 'order_no'=>$order->order_no, 'goods_id'=>$orderItem['item_id'], 'goods_type'=>$orderItem['goods_type'], 'order_item_id'=>$orderItem['id'], 'price'=>$orderItem['real_price'], 'brokerage_price'=>$grandpaProp['price']['customer'],// 'brokerage_prop'=>$grandpaProp['prop']['customer'], 'type'=>'subordinate', 'mode'=>$grandpaProp['mode'], 'status'=>0, 'createtime'=>time() ]; AgentOrder::insert($data); } } }catch(\think\Exception $e){ continue; } } } } /** * 结算 * @return void */ public function settle($orderNo){ $logList = AgentOrder::where([ 'order_no'=>$orderNo, 'status'=>0 ])->select(); AgentOrder::where([ 'order_no'=>$orderNo ])->update([ 'status'=>1 ]); if($logList){ foreach ($logList as $log){ $memo = $log['type'] == 'commission' ? '商品佣金' : '下级分销员卖货提成'; \app\api\model\app\agent\Money::changeMoney($log['beneficiary_user_id'],'money',$log['brokerage_price'],false,$memo); //检查升级 (new \app\api\model\app\agent\Level())->handle($log['beneficiary_user_id']); } } return true; } /** * 取消订单后 作废分佣记录 * @param $orderNo * @return bool */ public function cancelOrder($orderNo){ AgentOrder::where([ 'order_no'=>$orderNo ])->update([ 'status'=>2 ]); return true; } }