Files
chazhi_admin_broker/app/common/logic/PayNotifyLogic.php
2026-03-11 18:24:59 +08:00

781 lines
30 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
// +----------------------------------------------------------------------
// | likeadmin快速开发前后端分离管理后台PHP版
// +----------------------------------------------------------------------
// | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力
// | 开源版本可自由商用可去除界面版权logo
// | gitee下载https://gitee.com/likeshop_gitee/likeadmin
// | github下载https://github.com/likeshop-github/likeadmin
// | 访问官网https://www.likeadmin.cn
// | likeadmin团队 版权所有 拥有最终解释权
// +----------------------------------------------------------------------
// | author: likeadminTeam
// +----------------------------------------------------------------------
namespace app\common\logic;
use app\api\logic\CommonLogic;
use app\common\enum\PayEnum;
use app\common\enum\user\AccountLogEnum;
use app\common\model\order\OrderAll;
use app\common\model\order\OrderGroup;
use app\common\model\order\OrderMember;
use app\common\model\order\OrderStore;
use app\common\model\order\OrderStoreRenew;
use app\common\model\order\OrderTeamaster;
use app\common\model\order\OrderTeamasterRenew;
use app\common\model\recharge\RechargeOrder;
use app\common\model\refund\RefundLog;
use app\common\model\refund\RefundRecord;
use app\common\model\store\StoreUserAccountLog;
use app\common\model\order\OrderStoreRecharge;
use app\common\model\teamaster\TeamasterAccountLog;
use app\common\model\teamaster\TeamasterUser;
use app\common\model\teastore\TeaStore;
use app\common\model\user\UserStoreMoney;
use app\common\model\store\StoreMember;
use app\common\model\teastore\TeaStoreGroup;
use app\common\model\teastore\TeaStoreRoom;
use app\common\model\user\User;
use app\common\model\user\UserAccountLog;
use app\common\model\user\UserCoupon;
use app\common\model\user\UserGroup;
use app\common\model\user\UserMember;
use think\facade\Db;
use think\facade\Log;
/**
* 支付成功后处理订单状态
* Class PayNotifyLogic
* @package app\api\logic
*/
class PayNotifyLogic extends BaseLogic
{
public static function handle($action, $orderSn, $extra = [])
{
Db::startTrans();
try {
self::$action($orderSn, $extra);
Db::commit();
return true;
} catch (\Exception $e) {
Db::rollback();
Log::write(implode('-', [
__CLASS__,
__FUNCTION__,
$e->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);
}
}