getFile(), $e->getLine(), $e->getMessage() ])); self::setError($e->getMessage()); return $e->getMessage(); } } /** * @notes 充值回调 * @param $orderSn * @param array $extra * @author 段誉 * @date 2023/2/27 15:28 */ public static function recharge($orderSn, array $extra = []) { // Log::write("测试2",$orderSn."-".$extra['transaction_id']); $order = RechargeOrder::where('order_sn', $orderSn)->findOrEmpty(); // 增加用户累计充值金额及用户余额 $user = User::findOrEmpty($order->user_id); $before_amount = $user->user_money; $after_amount = $user->user_money + $order->order_amount; $user->total_recharge_amount += $order->order_amount; $user->user_money += $order->order_amount; $user->save(); // 记录账户流水 // AccountLogLogic::add( // $order->user_id, // AccountLogEnum::UM_INC_RECHARGE, // AccountLogEnum::INC, // $order->order_amount, // $order->order_sn, // '用户充值' // ); UserAccountLog::create([ "sn"=>createSn("user_account_log","sn"), "user_id"=>$order->user_id, "change_object"=>1, "change_type"=>4, "action"=>1, "amount"=>$order->order_amount, "before_amount"=>$before_amount, "after_amount"=>$after_amount, "source_sn"=>$orderSn, "store_id"=>$order->store_id, "remark"=>'用户充值', "create_time"=>time() ]); OrderAll::where("source_sn",$order->order_sn)->where("type",1)->update([ "pay_way"=>2, "order_status"=>1, "pay_status"=>1, "pay_time"=>time(), "update_time"=>time() ]); // 判断是否为第一次充值 $result = RechargeOrder::where('user_id', $order->user_id)->where("pay_status",1)->count(); if($result == 1){ // 判断是否为会员 $member = UserMember::where("user_id",$order->user_id)->where("status",1)->find(); if($member==null){ $time = time(); UserMember::create([ "user_id"=>$order->user_id, "expiration_time"=>strtotime('+1 year', $time), "dtime"=>time() ]); User::where("id",$order->user_id)->update(['member'=>1,'update_time'=>time()]); } } // 更新充值订单状态 $order->transaction_id = $extra['transaction_id'] ?? ''; $order->pay_status = PayEnum::ISPAID; $order->pay_time = time(); $order->save(); } public static function orderStore($orderSn, array $extra = []) { $order = OrderStore::where('order_sn', $orderSn)->findOrEmpty(); if($order->pay_status != 0){ return true; } // 查询用户 $user = User::findOrEmpty($order->user_id); // 记录账户流水 UserAccountLog::create([ "sn"=>createSn("user_account_log","sn"), "user_id"=>$order->user_id, "change_object"=>2, "change_type"=>1, "action"=>2, "amount"=>$order->order_amount, "before_amount"=>$user->user_money, "after_amount"=>$user->user_money, "source_sn"=>$orderSn, "store_id"=>$order->store_id, "remark"=>'包间预定', "create_time"=>time() ]); $tea_store = TeaStore::where("id",$order->store_id)->find(); // 添加商户流水信息 $order_amount = $order->order_amount; TeaStore::where('id', $order['store_id'])->inc('total_amount', $order_amount)->update(); TeaStore::where('id', $order['store_id'])->inc('balance', $order_amount)->update(); if($order->pay_way == 3){ $order_amount = 0; } $r = StoreUserAccountLog::create([ 'sn'=>createSn("store_user_account_log","sn"), 'user_id'=>$order->user_id, 'change_object'=>2, 'change_type'=>1, 'action'=>1, 'amount' => $order_amount, 'before_amount'=>$tea_store['balance'], 'after_amount' => round($tea_store['balance']+$order_amount,2), 'source_sn' => $orderSn, 'store_id'=>$order->store_id, 'room_id'=>$order->room_id, 'remark'=>"包间预定", 'create_time' => time() ]); //结算团购套餐 if($order['group_coupon_id'] != 0){ UserGroup::where('id',$order['group_coupon_id'])->update(["status"=>1]); $group = UserGroup::where("id",$order['group_coupon_id'])->find(); $store_group = TeaStoreGroup::where("id",$group['group_id'])->find(); $change_object = 4; if($group['type'] == 2){ $store_group['discount_price'] = 0; $change_object = 5; } StoreUserAccountLog::create([ 'sn'=>createSn("store_user_account_log","sn"), 'change_object'=>$change_object, 'change_type'=>1, 'user_id'=>$order->user_id, 'action'=>1, 'amount' => $store_group['discount_price'], 'before_amount'=>round($tea_store['balance']+$order_amount,2), 'after_amount' => round($tea_store['balance']+$store_group['discount_price']+$order_amount,2), 'source_sn' => $orderSn, 'store_id'=>$order->store_id, 'room_id'=>$order->room_id, 'remark'=>"团购套餐", 'create_time' => time() ]); TeaStore::where('id', $order['store_id'])->inc('total_amount', $store_group['discount_price'])->update(); TeaStore::where('id', $order['store_id'])->inc('balance', $store_group['discount_price'])->update(); } // 更新预定订单状态 $order->transaction_id = $extra['transaction_id'] ?? ''; $order->pay_status = PayEnum::ISPAID; $order->order_status = 1; $order->update_dtime = date("Y-m-d H:i:s"); $order->save(); if(isset($order['room_id'])){ if($order['room_id']!=0&&$order['room_id']!=""&&$order['room_id']!=null){ TeaStoreRoom::where('id', $order['room_id'])->inc('sold', 1)->update(); } } OrderAll::where("source_sn",$orderSn)->where("type",1)->update([ "pay_way"=>2, "order_status"=>1, "pay_status"=>1, "pay_time"=>time(), "update_time"=>time() ]); } public static function OrderGroup($orderSn, array $extra = []) { $order = OrderGroup::where('order_sn', $orderSn)->findOrEmpty(); if($order->pay_status != 0){ return true; } // 查询用户 $user = User::findOrEmpty($order->user_id); // 记录账户流水 UserAccountLog::create([ "sn"=>createSn("user_account_log","sn"), "user_id"=>$order->user_id, "change_object"=>2, "change_type"=>2, "action"=>2, "amount"=>$order->order_amount, "before_amount"=>$user->user_money, "after_amount"=>$user->user_money, "source_sn"=>$orderSn, "store_id"=>$order->store_id, "remark"=>'团购套餐', "create_time"=>time() ]); // 更新预定订单状态 $order->transaction_id = $extra['transaction_id'] ?? ''; $order->pay_status = PayEnum::ISPAID; $order->order_status = 1; $order->update_dtime = date("Y-m-d H:i:s"); $order->save(); OrderAll::where("source_sn",$orderSn)->where("type",6)->update([ "pay_way"=>2, "order_status"=>1, "pay_status"=>1, "pay_time"=>time(), "update_time"=>time() ]); $qr_sn = createSn("user_group","qr_sn"); $qr_url = CommonLogic::qrcode($qr_sn); $group = TeaStoreGroup::where('id', $order->group_id)->find(); UserGroup::create([ "user_id"=>$order->user_id, "group_id"=>$order->group_id, "qr_sn"=>$qr_sn, "qr_url"=>$qr_url['file_url'], "type"=>$group['type'], "order_id"=>$order->id, "store_id"=>$order->store_id, "dtime"=>date("Y-m-d H:i:s") ]); $tea_store = TeaStore::where("id",$order->store_id)->find(); // 添加商户流水信息 $order_amount = $order->order_amount; // TeaStore::where('id', $order['store_id'])->inc('total_amount', $order_amount)->update(); // TeaStore::where('id', $order['store_id'])->inc('balance', $order_amount)->update(); if(isset($order['group_id'])){ if($order['group_id']!=0&&$order['group_id']!=""&&$order['group_id']!=null){ TeaStoreGroup::where('id', $order['group_id'])->inc('sold', 1)->update(); } } // $r = StoreUserAccountLog::create([ // 'sn'=>createSn("store_user_account_log","sn"), // 'change_object'=>1, // 'change_type'=>1, // 'action'=>1, // 'amount' => $order_amount, // 'before_amount'=>$tea_store['balance'], // 'after_amount' => round($tea_store['balance']+$order_amount,2), // 'source_sn' => $orderSn, // 'store_id'=>$order->store_id, // 'room_id'=>$order->room_id, // 'remark'=>"团购套餐", // 'create_time' => time() // ]); } public static function OrderMember($orderSn, array $extra = []) { $order = OrderMember::where('order_sn', $orderSn)->findOrEmpty(); if($order->pay_status != 0){ return true; } // 查询用户 $user = User::findOrEmpty($order->user_id); // 记录账户流水 UserAccountLog::create([ "sn"=>createSn("user_account_log","sn"), "user_id"=>$order->user_id, "change_object"=>2, "change_type"=>3, "action"=>2, "amount"=>$order->order_amount, "before_amount"=>$user->user_money, "after_amount"=>$user->user_money, "source_sn"=>$orderSn, "store_id"=>0, "remark"=>'开通会员', "create_time"=>time() ]); // 更新预定订单状态 $order->transaction_id = $extra['transaction_id'] ?? ''; $order->pay_status = PayEnum::ISPAID; $order->order_status = 1; $order->update_dtime = date("Y-m-d H:i:s"); $order->save(); OrderAll::where("source_sn",$orderSn)->where("type",2)->update([ "pay_way"=>2, "order_status"=>1, "pay_status"=>1, "pay_time"=>time(), "update_time"=>time() ]); $member = UserMember::where("user_id",$order->user_id)->where("status",1)->find(); if($member!=null){ $expiration_time = strtotime('+1 year', $member['expiration_time']); UserMember::where("user_id",$order->user_id) ->update(['expiration_time',$expiration_time, 'update_dtime'=>time()]); }else{ $time = time(); UserMember::create([ "user_id"=>$order->user_id, "expiration_time"=>strtotime('+1 year', $time), "dtime"=>time() ]); User::where("id",$order->user_id)->update(['member'=>1,'update_time'=>time()]); } } public static function orderStoreRenew($orderSn, array $extra = []) { $order = OrderStoreRenew::where('order_sn', $orderSn)->findOrEmpty(); if($order->pay_status != 0){ return true; } Log::write("测试2",$orderSn); $order_store = OrderStore::where("id",$order['source_id'])->find(); // 查询用户 $user = User::findOrEmpty($order->user_id); // 记录账户流水 UserAccountLog::create([ "sn"=>createSn("user_account_log","sn"), "user_id"=>$order->user_id, "change_object"=>2, "change_type"=>7, "action"=>2, "amount"=>$order->price, "before_amount"=>$user->user_money, "after_amount"=>$user->user_money, "source_sn"=>$orderSn, "store_id"=>$order_store['store_id'], "remark"=>'包间续订', "create_time"=>time() ]); Log::write("测试4",$orderSn); $tea_store = TeaStore::where("id",$order_store['store_id'])->find(); // 添加商户流水信息 $order_amount = $order->price; TeaStore::where('id', $order_store['store_id'])->inc('total_amount', $order_amount)->update(); TeaStore::where('id', $order_store['store_id'])->inc('balance', $order_amount)->update(); if($order->pay_way == 3){ $order_amount = 0; } $r = StoreUserAccountLog::create([ 'sn'=>createSn("store_user_account_log","sn"), 'change_object'=>2, 'change_type'=>2, 'user_id'=>$order->user_id, 'action'=>1, 'amount' => $order_amount, 'before_amount'=>$tea_store['balance'], 'after_amount' => round($tea_store['balance']+$order_amount,2), 'source_sn' => $orderSn, 'store_id'=>$order_store['store_id'], 'room_id'=>$order_store['room_id'], 'remark'=>"包间续订", 'create_time' => time() ]); // 更新预定订单状态 $order->transaction_id = $extra['transaction_id'] ?? ''; $order->pay_status = PayEnum::ISPAID; $order->pay_dtime = time(); $order->save(); OrderAll::where("source_sn",$orderSn)->where("type",7)->update([ "pay_way"=>2, "order_status"=>1, "pay_status"=>1, "pay_time"=>time(), "update_time"=>time() ]); $renew_timeslot = explode(',', $order->timeslot); $store_timeslot = explode(',', $order_store['timeslot']); $timeList = array_merge($store_timeslot, $renew_timeslot); $end = end($timeList); $da['end_time'] = $end; $da['timeslot'] = implode(',', $timeList); $da['renew_hour'] = $order->hour + $order_store['renew_hour']; $da['renew_price'] = $order_amount+$order_store['renew_price']; $da['store_income_price'] = $order_store['store_income_price'] + $order_amount; $transfer_order = OrderStore::where('transfer_order_id',$order['source_id'])->select(); $ids = explode(',',$order['source_id']); if($transfer_order->count() > 0){ $orderIds = $transfer_order->column('id'); $ids = array_merge($ids,$orderIds); } OrderStore::whereIn("id",$ids)->update($da); } public static function OrderStoreRecharge($orderSn, array $extra = []){ $order = OrderStoreRecharge::where('order_sn', $orderSn)->findOrEmpty(); if($order->pay_status != 0){ return true; } $StoreMember = StoreMember::where([ 'user_id'=>$order->user_id, 'store_id'=>$order->store_id ])->find(); if(!$StoreMember){ StoreMember::create([ 'store_id'=>$order->store_id, 'user_id'=>$order->user_id, 'dtime'=>time() ]); } $UserStoreMoney = UserStoreMoney::where([ 'user_id'=>$order->user_id, 'store_id'=>$order->store_id ])->find(); if($UserStoreMoney){ $money = $UserStoreMoney->money+$order->recharge_price+$order->gift_price; $UserStoreMoney->money = $money; $UserStoreMoney->update_dtime = date('Y-m-d H:i:s'); $UserStoreMoney->save(); }else{ $money = $order->recharge_price+$order->gift_price; UserStoreMoney::create([ 'store_id'=>$order->store_id, 'user_id'=>$order->user_id, 'money' =>$money, 'dtime'=> date('Y-m-d H:i:s') ]); } $tea_store = TeaStore::where("id",$order['store_id'])->find(); $order_amount = $order->order_amount; $r = StoreUserAccountLog::create([ 'sn'=>createSn("store_user_account_log","sn"), 'change_object'=>2, 'change_type'=>9, 'user_id'=>$order->user_id, 'action'=>1, 'amount' => $order_amount, 'before_amount'=>$tea_store['balance'], 'after_amount' => round($tea_store['balance']+$order_amount,2), 'source_sn' => $orderSn, 'store_id'=>$order['store_id'], 'room_id'=>'', 'remark'=>"门店余额充值", 'create_time' => time() ]); UserAccountLog::create([ "sn"=>createSn("user_account_log","sn"), "user_id"=>$order->user_id, "change_object"=>2, "change_type"=>20, "action"=>2, "amount"=>$order->order_amount, "before_amount"=>0, "after_amount"=>0, "source_sn"=>$orderSn, "store_id"=>$order->store_id, "remark"=>'门店余额充值', "create_time"=>time() ]); $order->transaction_id = $extra['transaction_id'] ?? ''; $order->pay_status = PayEnum::ISPAID; $order->pay_time = time(); $order->save(); TeaStore::where('id', $order['store_id'])->inc('total_amount', $order_amount)->update(); TeaStore::where('id', $order['store_id'])->inc('balance', $order_amount)->update(); } public static function orderTeamaster($orderSn, array $extra = []){ $order = OrderTeamaster::where('order_sn', $orderSn)->findOrEmpty(); if($order->pay_status != 0){ return true; } if($order->user_coupon_id !=0){ $user_coupon=UserCoupon::where([ 'id'=>$order->user_coupon_id, 'status'=>0 ])->find(); $user_coupon->status = 1; $user_coupon->save(); } $data = [ 'pay_status'=>1, 'order_status'=>28, 'transaction_id'=>$extra['transaction_id'], 'pay_way'=>2, 'pay_time'=>time() ]; $order = OrderTeamaster::where('id',$order->id)->update($data); } public static function orderTeamaRenw($orderSn, array $extra = []){ Log::write("支付日志",'444444444444444444444444'); $order = OrderTeamasterRenew::where('order_sn', $orderSn)->findOrEmpty(); if($order->pay_status != 0){ return true; } $is_renewal = 0; $hours = $order->hours; $is_tea = 0; $renew_price = 0; $renew_tea_price =0; $change_type = 2; $source_order = OrderTeamaster::where('id',$order->source_id)->find(); $renew_income_price =$order->price*0.35; $team_income_price = $source_order->team_income_price+$renew_income_price; $end_time = $source_order->end_time+($hours * 3600); Log::write("支付日志",'555555555555555555555'); Log::write("测试1",$orderSn); $remark = '续时'; if($order->type == 1){ $is_renewal =1; $renew_price =$source_order->server_price*$hours; }elseif ($order->type == 2){ $is_tea =1; $renew_tea_price =$order->tea_price; $change_type = 3; $remark = '需茶'; }elseif ($order->type == 3){ $is_tea =1; $renew_tea_price =$order->tea_price; $is_renewal =1; $renew_price =$source_order->server_price*$hours; $remark = '续时+续茶'; } $renw_data = [ 'pay_status'=>1, 'pay_dtime'=>time() ]; Log::write("测试2",$orderSn); $data = [ 'is_renewal'=>$is_renewal, 'is_tea'=>$is_tea, 'renew_tea_price'=>$renew_tea_price+$source_order->renew_tea_price, 'renew_price'=>$renew_price+$source_order->renew_price, 'renew_hour'=>$hours+$source_order->renew_hour, 'team_income_price'=>$team_income_price, 'end_time'=>$end_time, 'pay_way'=>2, ]; $team_user = TeamasterUser::where('id',$source_order->team_user_id)->find(); $account_log = [ 'team_user_id'=>$source_order->team_user_id, 'user_id'=>$order->user_id, 'change_object'=>1, 'change_type'=>$change_type, 'action'=>1, 'amount'=>$order->price, 'before_amount'=>$team_user->user_money, 'after_amount'=>$team_user->user_money+$renew_income_price, 'source_sn'=>$source_order->order_sn, 'sub_sn'=>$order->order_sn, 'remark'=>$remark, 'create_time'=>time() ]; $renw_order = OrderTeamasterRenew::where('id',$order->id)->update($renw_data); $team_order = OrderTeamaster::where('id',$source_order->id)->update($data); self::getTeamasterAccountLog($account_log); } public static function getTeamasterAccountLog($account_log){ TeamasterAccountLog::create($account_log); return []; } public static function refundOrderGroup($orderSn, array $extra = []){ Log::write("退款1",$orderSn); $order = OrderGroup::where('order_sn', $orderSn)->findOrEmpty(); $user = User::findOrEmpty($order->user_id); $before_amount = $user->user_money; $after_amount = $user->user_money; Log::write("退款2",$orderSn); UserAccountLog::create([ "sn"=>createSn("user_account_log","sn"), "user_id"=>$order->user_id, "change_object"=>2, "change_type"=>5, "action"=>1, "amount"=>$order->order_amount, "before_amount"=>$before_amount, "after_amount"=>$after_amount, "source_sn"=>$orderSn, "store_id"=>$order->store_id, "remark"=>'用户团购套餐退款', "create_time"=>time() ]); Log::write("退款3",$orderSn); OrderAll::where("source_sn",$order->order_sn)->where("type",5)->update([ "order_status"=>5, "update_time"=>time() ]); Log::write("退款4",$orderSn); // 更新充值订单状态 $order->order_status =5; $order->update_dtime = date("Y-m-d H:i:s"); $order->save(); Log::write("退款5",$orderSn); UserGroup::where("order_id",$order->id)->update(['status'=>3]); RefundRecord::where("source_sn",$orderSn)->update(['refund_way'=>3,'refund_status'=>1,'update_time'=>time(),'transaction_id'=>$extra['transaction_id'] ?? '']); Log::write("退款6",$orderSn); } public static function refundOrderStore($orderSn, array $extra = []){ $order = OrderStore::where('order_sn', $orderSn)->findOrEmpty(); $user = User::findOrEmpty($order->user_id); $before_amount = $user->user_money; $after_amount = $user->user_money; UserAccountLog::create([ "sn"=>createSn("user_account_log","sn"), "user_id"=>$order->user_id, "change_object"=>2, "change_type"=>5, "action"=>1, "amount"=>$order->order_amount, "before_amount"=>$before_amount, "after_amount"=>$after_amount, "source_sn"=>$orderSn, "store_id"=>$order->store_id, "remark"=>'用户包间预定退款', "create_time"=>time() ]); $tes_store = TeaStore::where('id', $order['store_id'])->find(); $order_amount = $order->store_income_price; $total_amount = round($tes_store['total_amount'] - $order_amount,2); $balance = round($tes_store['balance'] - $order_amount,2); TeaStore::where('id', $order['store_id'])->update(['total_amount'=>$total_amount,'balance'=>$balance]); StoreUserAccountLog::create([ 'sn'=>createSn("store_user_account_log","sn"), 'change_object'=>1, 'change_type'=>1, 'action'=>2, 'amount' => $order->store_income_price, 'before_amount'=>$tes_store['balance'], 'after_amount' => $balance, 'source_sn' => $orderSn, 'store_id'=>$order->store_id, 'room_id'=>$order->room_id, 'remark'=>"包间预定退款", 'create_time' => time() ]); OrderAll::where("source_sn",$order->order_sn)->where("type",$order['order_type'])->update([ "order_status"=>5, "update_time"=>time() ]); // 更新包间订单状态 $order->order_status =5; $order->update_dtime = date("Y-m-d H:i:s"); $order->save(); //查询是否使用优惠券 if($order->user_coupon_id != 0){ UserCoupon::where("id",$order->user_coupon_id)->update(['status'=>0]); } //查询是否使用团购券 if($order->group_coupon_id != 0){ UserGroup::where("id",$order->group_coupon_id)->update(['status'=>0]); } RefundRecord::where("source_sn",$orderSn)->update(['refund_way'=>3,'refund_status'=>1,'update_time'=>time(),'transaction_id'=>$extra['transaction_id'] ?? '']); } public static function teamasterOrderRefund($orderSn, array $extra = []){ $order = OrderTeamaster::where('order_sn', $orderSn)->findOrEmpty(); $data['pay_way'] = 3; if($order->order_status ==28||$order->order_status ==29){ $data['order_status'] = 40; $data['refund_time'] = time(); $data['refund_price'] = $order->order_amount; }elseif($order->order_status ==30){ $data['order_status'] = 42; $data['refund_time'] = time(); $refund_pricet = $order->order_amount - $order->mileage_server_price; $refund_pricet = $refund_pricet-($order->server_all_price*0.3); $data['refund_price'] = $refund_pricet; $data['team_income_price'] = (($order->server_all_price*0.3)*0.65)+$order->mileage_server_price; $user_team =TeamasterUser::where('id',$order->team_user_id)->find(); $user_money = $user_team['user_money']+$data['team_income_price']; $user_team->user_money = $user_money; $user_team->save(); $account_log = [ 'team_user_id'=>$order->team_user_id, 'user_id'=>$order->user_id, 'change_object'=>2, 'change_type'=>1, 'action'=>1, 'amount'=>$data['team_income_price'], 'before_amount'=>$user_team->user_money, 'after_amount'=>$user_team->user_money+$data['team_income_price'], 'source_sn'=>$order->order_sn, 'sub_sn'=>$order->order_sn, 'remark'=>'出发后用户退款——收取30%服务费和全额车马费', 'create_time'=>time() ]; self::getTeamasterAccountLog($account_log); } OrderTeamaster::where('id',$order->id)->update($data); } }