select()->toArray(); $total_vip = 0; foreach ($detail as $value){ $total_vip +=$value['cart_info']['vip_frozen_price']; } $data=[ 'order_id' => $order['id'], 'transaction_id' => $transaction_id??0, 'order_sn' =>$order['order_id'], 'user_id' => $order['uid'], // 'financial_type' => $financialType, 'number' => $total_vip, 'pay_type' => $pay_type??1, 'status' => 0, 'store_id' => $order['store_id'], 'staff_id' => $order['staff_id'], 'create_time'=>time() ]; Db::name('vip_flow')->insert($data); //todo 限制执行 // self::afterPay($order,$transaction_id,$total_vip); return true; } public static function afterPay($order, $transaction_id = 0,$Vipmoney=0) { $financeLogic = new StoreFinanceFlowLogic(); $financeLogic->order = $order; $financeLogic->user = ['uid' => $order['uid']]; $financeLogic->in($transaction_id, $Vipmoney, OrderEnum::USER_ORDER_PAY); //用户订单支付 $count_frees = 0; //平台手续费 $fees = bcdiv(bcmul($Vipmoney, '0.02', 2), 1, 2); $count_frees = bcadd($count_frees, $fees, 2); if ($fees > 0) { $financeLogic->in($transaction_id, $fees, OrderEnum::ORDER_HANDLING_FEES, $order['store_id'], 0, 0, $order['pay_type']); //平台手续费 $financeLogic->out($transaction_id, $fees, OrderEnum::ORDER_HANDLING_FEES, $order['store_id'], $order['staff_id'], 0, $order['pay_type']); //商户平台手续费支出 } // $frozen = bcsub($order->profit, $fees, 2); //缴纳齐全了就加商户没有就加到平台 $money_limt = SystemStore::where('id', $order['store_id'])->field('paid_deposit,security_deposit')->find(); $deposit = bcsub($money_limt['security_deposit'], $money_limt['paid_deposit'], 2); //保证金剩余额度 $store_profit = bcdiv(bcmul($Vipmoney, '0.05', 2), 1, 2); $count_frees = bcadd($count_frees, $store_profit, 2); if ($deposit > 0) { if ($deposit > $store_profit) { if ($store_profit > 0) { $financeLogic->out($transaction_id, $store_profit, OrderEnum::ORDER_MARGIN, $order['store_id'], $order['staff_id'], 0, $order['pay_type']); } } else { $money = bcsub($store_profit, $deposit, 2); if ($deposit > 0) { $financeLogic->out($transaction_id, $deposit, OrderEnum::ORDER_MARGIN, $order['store_id'], $order['staff_id'], 0, $order['pay_type']); } if ($money) { SystemStore::where('id', $order['store_id'])->inc('store_money', $money)->update(); $financeLogic->in($transaction_id, $money, OrderEnum::MERCHANT_ORDER_OBTAINS, $order['store_id'], 0, 0, $order['pay_type']); //平台手续费 } } } else { if ($store_profit > 0) { SystemStore::where('id', $order['store_id'])->inc('store_money', $store_profit)->update(); $financeLogic->in($transaction_id, $store_profit, OrderEnum::MERCHANT_ORDER_OBTAINS, $order['store_id'], 0, 0, $order['pay_type']); //平台手续费 } } if ($order['is_vip'] >= 1) { if ($order['spread_uid'] > 0) { $financeLogic->other_arr['vip_uid'] = $order['spread_uid']; $fees = bcdiv(bcmul($Vipmoney, '0.08', 2), 1, 2); $count_frees = bcadd($count_frees, $fees, 2); if ($fees > 0) { User::where('id', $order['spread_uid'])->inc('now_money', $fees)->update(); $financeLogic->in($transaction_id, $fees, OrderEnum::VIP_ORDER_OBTAINS, $order['store_id'], 0, 0, $order['pay_type']); //vip订单获得 $financeLogic->out($transaction_id, $fees, OrderEnum::VIP_ORDER_OBTAINS, $order['store_id'], $order['staff_id'], 0, $order['pay_type']); } } $fees = bcdiv(bcmul($Vipmoney, '0.01', 2), 1, 2); $count_frees = bcadd($count_frees, bcmul($fees, 3, 2), 2); $village_uid = 0; $brigade_uid = 0; //查询用户对应的村长和队长 if ($order['uid'] > 0) { $address = UserAddress::where(['uid' => $order['uid'], 'is_default' => 1])->find(); if ($address) { $arr1 = UserAddress::where(['village' => $address['village'], 'is_default' => 1])->column('uid'); if ($arr1) { $village_uid = User::where('id', 'in', $arr1)->where('user_ship', 2)->value('id'); if($village_uid){ User::where('id', $village_uid)->inc('integral', $fees)->update(); } } $arr2 = UserAddress::where(['village' => $address['village'], 'brigade' => $address['brigade'], 'is_default' => 1])->column('uid'); if ($arr2) { $brigade_uid = User::where('id', 'in', $arr1)->where('user_ship', 3)->value('id'); if($brigade_uid){ User::where('id', $brigade_uid)->inc('integral', $fees)->update(); } } } } if ($fees > 0) { //村长获得 $sing=[]; $user_sing=new UserSign(); $sing[]=[ 'uid'=>$village_uid, 'title'=>'村长订单获得兑换券', 'store_id'=>$order['store_id'], 'number'=>$fees, ]; $sing[]=[ 'uid'=>$brigade_uid, 'title'=>'队长订单获得兑换券', 'store_id'=>$order['store_id'], 'number'=>$fees, ]; // if ($village_uid > 0) { // $financeLogic->other_arr['vip_uid'] = $village_uid; // } // $financeLogic->in($transaction_id, $fees, OrderEnum::VILLAGE_ORDER_OBTAINS, $order['store_id'], 0, 0, $order['pay_type']); // $financeLogic->out($transaction_id, $fees, OrderEnum::VILLAGE_ORDER_OBTAINS, $order['store_id'], $order['staff_id'], 0, $order['pay_type']); //队长获得 // if ($brigade_uid > 0) { // $financeLogic->other_arr['vip_uid'] = $brigade_uid; // } // $financeLogic->in($transaction_id, $fees, OrderEnum::BRIGADE_ORDER_OBTAINS, $order['store_id'], 0, 0, $order['pay_type']); // $financeLogic->out($transaction_id, $fees, OrderEnum::BRIGADE_ORDER_OBTAINS, $order['store_id'], $order['staff_id'], 0, $order['pay_type']); $user_sing->saveAll($sing); //其他获得 $financeLogic->other_arr['vip_uid'] = 0; $financeLogic->in($transaction_id, $fees, OrderEnum::OTHER_ORDER_OBTAINS, $order['store_id'], 0, 0, $order['pay_type']); $financeLogic->out($transaction_id, $fees, OrderEnum::OTHER_ORDER_OBTAINS, $order['store_id'], $order['staff_id'], 0, $order['pay_type']); } } $fees=bcsub($Vipmoney, $count_frees, 2); //供应链订单获得 if ($fees > 0) { $financeLogic->in($transaction_id,$fees , OrderEnum::SUPPLIER_ORDER_OBTAINS, $order['store_id'], 0, 0, $order['pay_type']); $financeLogic->out($transaction_id, $fees, OrderEnum::SUPPLIER_ORDER_OBTAINS, $order['store_id'], $order['staff_id'], 0, $order['pay_type']); } $financeLogic->save(); } }