190 lines
6.4 KiB
PHP
Executable File
190 lines
6.4 KiB
PHP
Executable File
<?php
|
|
// +----------------------------------------------------------------------
|
|
// | 宏驰云科技开发团队 版权所有 拥有最终解释权
|
|
// +----------------------------------------------------------------------
|
|
|
|
// | Author: HcyShop-kiki
|
|
// +----------------------------------------------------------------------
|
|
|
|
namespace app\common\logic;
|
|
|
|
use app\api\logic\GoodsLogic;
|
|
use app\api\logic\OrderLogic;
|
|
use app\api\logic\TeamLogic;
|
|
use app\common\model\{AccountLog, Footprint, MessageScene_, NoticeSetting, OrderLog, User, Pay, Order, OrderTrade};
|
|
use app\common\server\ConfigServer;
|
|
use app\common\server\DistributionServer;
|
|
use think\Db;
|
|
use think\Exception;
|
|
use think\facade\Hook;
|
|
use think\facade\Log;
|
|
|
|
/**
|
|
* 支付成功后处理订单状态
|
|
* Class PayNotifyLogic
|
|
* @package app\api\logic
|
|
*/
|
|
class PayNotifyLogic
|
|
{
|
|
public static function handle($action, $order_sn, $extra = [])
|
|
{
|
|
Db::startTrans();
|
|
try {
|
|
self::$action($order_sn, $extra);
|
|
Db::commit();
|
|
return true;
|
|
} catch (Exception $e) {
|
|
Db::rollback();
|
|
$record = [
|
|
__CLASS__, __FUNCTION__, $e->getFile(), $e->getLine(), $e->getMessage()
|
|
];
|
|
Log::record(implode('-', $record));
|
|
return $e->getMessage();
|
|
}
|
|
}
|
|
|
|
|
|
//下单回调
|
|
private static function order($order_sn, $extra = [])
|
|
{
|
|
$time = time();
|
|
|
|
$order_model = new Order();
|
|
$order = $order_model
|
|
->with('order_goods')
|
|
->where('order_sn',$order_sn)
|
|
->find();
|
|
|
|
//增加会员消费累计额度
|
|
$user = User::get($order['user_id']);
|
|
$user->total_order_amount = ['inc', $order['order_amount']];
|
|
|
|
//余额支付,扣除余额
|
|
if ($order['pay_way'] == Pay::BALANCE_PAY) {
|
|
$user->user_money = ['dec', $order['order_amount']];
|
|
$user->save();
|
|
AccountLogLogic::AccountRecord($order['user_id'], $order['order_amount'], 2, AccountLog::balance_pay_order, '', $order['id'], $order_sn);
|
|
} else {
|
|
$user->save();
|
|
}
|
|
|
|
$order->pay_status = Pay::ISPAID;
|
|
$order->pay_time = $time;
|
|
$order->order_status = Order::STATUS_WAIT_DELIVERY;
|
|
if (isset($extra['transaction_id'])) {
|
|
$order->transaction_id = $extra['transaction_id'];
|
|
}
|
|
$order->save();
|
|
|
|
//扣除库存
|
|
$deduct_type = ConfigServer::get('trading','deduct_type', 1);
|
|
if ($deduct_type == 0) {
|
|
//扣除库存,增加销量
|
|
OrderGoodsLogic::decStock($order['order_goods']);
|
|
}
|
|
|
|
//订单日志
|
|
OrderLogLogic::record(
|
|
OrderLog::TYPE_USER,
|
|
OrderLog::USER_PAID_ORDER,
|
|
$order['id'],
|
|
$user['id'],
|
|
OrderLog::USER_PAID_ORDER
|
|
);
|
|
|
|
//拼团订单,更新拼团信息
|
|
if ($order['order_type'] == Order::TEAM_ORDER){
|
|
TeamLogic::updateTeam($order['id']);
|
|
}
|
|
|
|
//拼购,砍价的订单不参与分销分佣
|
|
if ($order['order_type'] == Order::NORMAL_ORDER){
|
|
DistributionServer::commission($order['id']);
|
|
}
|
|
|
|
|
|
//发送通知
|
|
Hook::listen('notice', [
|
|
'user_id' => $user['id'],
|
|
'order_id' => $order['id'],
|
|
'scene' => NoticeSetting::ORDER_PAY_NOTICE,
|
|
]);
|
|
|
|
|
|
//短信通知
|
|
Hook::listen('sms_send', [
|
|
'key' => NoticeSetting::ORDER_PAY_NOTICE,
|
|
'mobile' => $order->mobile,
|
|
'user_id' => $user->id,
|
|
'params' => [
|
|
'nickname' => $user->nickname,
|
|
'order_sn' => $order->order_sn,
|
|
'order_amount' => $order->order_amount,
|
|
'time' => $order->create_time,
|
|
'total_num' => $order->total_num.'件',
|
|
'goods_name' => omit_str(($order->order_goods[0]['goods_name'] ?? '商品'), 8)
|
|
]
|
|
]);
|
|
|
|
$order_contact_mobile = ConfigServer::get('order_message', 'order_contact_mobile');
|
|
//平台短信通知
|
|
if($order_contact_mobile) {
|
|
Hook::listen('sms_send',[
|
|
'key' => NoticeSetting::USER_PAID_NOTICE_PLATFORM,
|
|
'mobile' => $order_contact_mobile,
|
|
'params' => [
|
|
'order_sn' => $order['order_sn'],
|
|
],
|
|
]);
|
|
}
|
|
|
|
// 赠送成长值和积分
|
|
Hook::listen('give_reward', [
|
|
'order_id' => $order['id'],
|
|
'scene' => 1, //1=下单支付场景
|
|
]);
|
|
|
|
// 钩子-记录足迹(下单结算)
|
|
Hook::listen('footprint', [
|
|
'type' => Footprint::place_order,
|
|
'user_id' => $user['id'],
|
|
'foreign_id' => $order['id'], //订单ID
|
|
'total_money' => $order['order_amount'] //订单应付金额
|
|
]);
|
|
|
|
//打印订单
|
|
Hook::listen('printer', [
|
|
'order_id' => $order['id'],
|
|
]);
|
|
|
|
}
|
|
/**
|
|
* note 充值回调
|
|
* create_time 2020/10/26 18:53
|
|
*/
|
|
private static function recharge($order_sn,$extra = []){
|
|
$new = time();
|
|
$order = Db::name('recharge_order')->where(['order_sn'=>$order_sn])->find();
|
|
$update_data['pay_time'] = $new;
|
|
$update_data['pay_status'] = Pay::ISPAID;
|
|
if (isset($extra['transaction_id'])) {
|
|
$update_data['transaction_id'] = $extra['transaction_id'];
|
|
}
|
|
Db::name('recharge_order')->where(['id'=>$order['id']])->update($update_data);
|
|
$user = User::get($order['user_id']);
|
|
$total_money = $order['order_amount']+$order['give_money'];
|
|
$total_integral = $order['give_integral'];
|
|
$user->user_money = ['inc', $total_money];
|
|
$user->user_integral = ['inc', $total_integral];
|
|
$user->user_growth = ['inc', $order['give_growth']];
|
|
$user->total_recharge_amount = ['inc',$total_money];
|
|
$user->save();
|
|
//记录余额
|
|
$total_money > 0 && AccountLogLogic::AccountRecord($user->id,$total_money,1, AccountLog::recharge_money);
|
|
//记录积分
|
|
$total_integral > 0 && AccountLogLogic::AccountRecord($user->id,$total_integral,1, AccountLog::recharge_give_integral);
|
|
//记录成长值
|
|
$order['give_growth'] > 0 &&AccountLogLogic::AccountRecord($user->id,$order['give_growth'],1, AccountLog::recharge_give_growth);
|
|
}
|
|
|
|
} |