781 lines
30 KiB
PHP
781 lines
30 KiB
PHP
<?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);
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
}
|