$order_info['trade_id']]); $order = AreaOrder::findOne(['order_no' => $order_info['order_no']]); $configs = \Yii::$app->services->setting->addons->get($order['mall_id'], AreaEnum::ADDONS_NAME, 'basic'); //维护订单数据 if ($order->status != StatusEnum::ENABLED) throw new Exception('该订单已被处理'); if ($order->is_pay == 1) throw new Exception('订单已支付,请不要重复支付'); $order->is_pay = StatusEnum::ENABLED; $order->pay_time = time(); $order->out_trade_no = $payment_trade['out_trade_no']; $order->total_commission = bcmul($order->price * ($configs['add_price_pre']/100) * ($configs['price_commission_pre'] / 100), 1, 2); $order->commission = $order->total_commission; //获取是否存在已购买过相同区代的订单 $area_order = AreaOrder::getOne([ ['mall_id' => $order->mall_id], ['level' => $order->level], ['area_id' => $order->area_id], ['is_pay' => StatusEnum::ENABLED], ['status' => StatusEnum::ENABLED] ]); $insert_wallet = []; //如果存在则需要处理佣金 if (!empty($area_order)) { //判断是否修改过每次加价、分红设置配置数据,未修改则需扣除上个订单的佣金,出现修改则不需要扣除 $total_commission = bcmul($area_order->price * ($configs['add_price_pre']/100) * ($configs['price_commission_pre'] / 100), 1, 2); if ($total_commission == $area_order->total_commission) { $order->commission = $order->total_commission - $area_order->total_commission; } else { $area_order->total_commission = $total_commission; $area_order->commission = $total_commission; $order->commission = $order->total_commission - $area_order->total_commission; } $area_order->status = StatusEnum::DELETE; //退回购买支付金额 $insert_wallet[] = [ 'mall_id' => $area_order->mall_id, 'user_id' => $area_order->user_id, 'is_frozen' => false, 'wallet_type' => 'balance', 'money' => $area_order->price, //转入金额 'desc' => '其他用户加价占用代理身份', 'source_table' => 'addons_area_order', 'source_table_id' => $area_order->id,//结算周期id 'from_type' => UserWalletEnum::REFUND, 'capital_type' => UserWalletEnum::AREA_BONUS_REFUND, // 'not_add_total' => true, ]; //加价分红 $insert_wallet[] = [ 'mall_id' => $area_order->mall_id, 'user_id' => $area_order->user_id, 'is_frozen' => false, 'wallet_type' => 'commission', 'money' => $area_order->commission, //转入金额 'desc' => '代理身份被其他用户加价占用,获得加价分红', 'source_table' => 'addons_area_order', 'source_table_id' => $area_order['id'],// 'from_type' => UserWalletEnum::FROM_AREA, 'capital_type' => UserWalletEnum::AREA_BONUS_REWARD, ]; $area_order->save(); //维护区代申请数据 AreaApply::updateAll(['check_status' => 2, 'refund_time' => time(), 'is_refund' => 1, 'refund_remark' => '代理身份被其他用户加价占用,获得加价分红'], ['order_id' => $area_order->id, 'mall_id' => $area_order->mall_id]); } if (!$order->save()) throw new Exception('修改订单失败:'. $order->getErrorMessage()); //维护区代身份 AreaAgent::updateAll(['status' => StatusEnum::DELETE], ['level' => $order->level, 'district_id' => $order->area_id, 'mall_id' => $order->mall_id]); if (!empty($insert_wallet)) { UserWalletService::batchHandleByQueue($insert_wallet); } // $res = Order::pay($order,$order_info['pay_type'],$payment_trade['out_trade_no']); // if($res === false) throw new Exception(Order::getStaticError()); return true; } catch (Exception $e) { \Yii::$app->custom->logs('notify:'.$e->getMessage()); $this->setStaticError($e->getMessage()); return false; } } }