leftJoin('user us','commissions_detail.user_id=us.user_id') ->leftJoin('order_goods od','commissions_detail.order_goods_id=od.order_goods_id') ->field('commissions_detail.*,od.create_time as order_create_time,od.commission_settlement_time,od.commission_settlement_status,us.seller_grade') ->order(['commissions_detail.order_id'=>'asc','od.commission_settlement_time'=>'desc']) ->select(); $ratios = Setting::getItem('distributor_grade', 10001)['distributor']; if (count($list)){ $data = $orderUpdate = $orderIds = []; $commDetailM = new \app\common\model\user\CommissionsDetail(); $orderM = new \app\common\model\Order(); foreach ($list as $item){ $temp['user_id'] = $item['user_id']; $temp['clearing_money'] = $item['clearing_money']; $temp['clearing_money_amount'] = $item['clearing_money_amount']; $temp['create_time'] = strtotime($item['create_time']); $temp['update_time'] = strtotime($item['update_time']); $temp['clearing_status'] = $item['clearing_status']; $temp['order_id'] = $item['order_id']; $temp['shop_id'] = $item['shop_id']; $temp['role'] = $item['role']; $temp['buyer_user_id'] = $item['buyer_user_id']; $temp['commission_level'] = $item['commission_level']; $temp['commission_percent'] = 0; if ($item['commission_level'] == 1){ $temp['commission_percent'] = $ratios[$item['seller_grade']-1]['first_commission']??0;; } if ($item['commission_level'] == 2){ $temp['commission_percent'] = $ratios[$item['seller_grade']-1]['second_commission']??0;; } if ($item['role'] == 2){ $shop = Shops::find($item['shop_id']); $temp['commission_percent'] = $shop->boss_percent; } if ($item['role'] == 3){ $shop = Shops::find($item['shop_id']); $temp['commission_percent'] = $shop->manager_percent; } if ($item['role'] == 4){ $shop = Shops::find($item['shop_id']); $temp['commission_percent'] = $shop->staff_percent; } if ($item['role'] == 5){ $md = new ShopIdentity(); $pers = $md->field('shop_id,role_id as role,fc_percent as percent') ->where('shop_id',$item['shop_id']) ->where('role_id',5)->find(); $temp['commission_percent'] = $pers->percent??0; } $temp['seller_grade'] = $item['seller_grade']; $temp['order_create_time'] = $item['order_create_time']; //计算销售额 $orderGoods = OrderGoods::field('order_goods_id,total_num,total_pay_price,rice_card_money,total_pay_price,frozen_status') ->where('order_id',$item['order_id'])->select(); $saleVolume = '0'; foreach ($orderGoods as $og){ $rate = 1; $refund = OrderRefund::where('order_goods_id',$og->order_goods_id) ->where('finance_refund',10)->find(); $ogSale = bcadd($og['total_pay_price'],$og['rice_card_money'],4); if ($refund){ $rate = bcdiv(strval($og['total_num'] - $refund['goods_num']),strval($og['total_num']),4); } if ($rate <= 1 && $rate >= 0){ $saleVolume = bcadd(bcmul($ogSale,strval($rate),4),strval($saleVolume),4); } } $temp['order_sale_volume'] = $saleVolume; $data[] = $temp; if (!in_array($temp['order_id'],$orderIds)){ $orderTemp['order_id'] = $item['order_id']; $orderTemp['commission_settlement_time'] = $item['commission_settlement_time']; $orderTemp['commission_settlement_status'] = $item['commission_settlement_status']; $orderUpdate[] = $orderTemp; $orderIds[] = $item['order_id']; } } //新增到新分佣表 $commDetailM->insertAll($data); //更新order新增字段 $orderM->saveAll($orderUpdate); } } }