初始上传

This commit is contained in:
2026-04-04 17:27:12 +08:00
parent 4d80d28eb4
commit b7e11774ee
11191 changed files with 1588469 additions and 0 deletions

View File

@@ -0,0 +1,27 @@
<?php
/**
* Niushop商城系统 - 团队十年电商经验汇集巨献!
* =========================================================
* Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
* ----------------------------------------------
* 官方网址: https://www.niushop.com
* =========================================================
*/
namespace app\event\order;
use app\model\order\OrderCommon;
/**
* 订单完成之后达到时间自动关闭售后服务
*/
class CronOrderAfterSaleClose
{
// 行为扩展的执行入口必须是run
public function handle($data)
{
$order = new OrderCommon();
//订单自动完成
return $order->orderAfterSaleClose($data["relate_id"]);
}
}

View File

@@ -0,0 +1,36 @@
<?php
/**
* Niushop商城系统 - 团队十年电商经验汇集巨献!
* =========================================================
* Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
* ----------------------------------------------
* 官方网址: https://www.niushop.com
* =========================================================
*/
namespace app\event\order;
use app\model\order\OrderCommon;
use app\model\order\OrderCron;
use app\model\system\Cron;
/**
* 订单自动关闭
*/
class CronOrderClose
{
// 行为扩展的执行入口必须是run
public function handle($data)
{
$order = new OrderCommon();
$order_info = $order->getOrderInfo([ ['order_id', '=', $data['relate_id'] ] ], '*')['data'] ?? [];
if (!empty($order_info) && $order_info['order_status'] == 0 && $order_info['pay_type'] != 'offlinepay') {
$result = $order->orderClose($data['relate_id'], [], '长时间未支付,订单自动关闭');//订单自动关闭
//todo 如果关闭失败,就再创建一个自动关闭任务
if(empty($result) && empty($result['code']) && $result['code'] < 0){
OrderCron::close(['site_id' => $order_info['site_id'], 'order_id' => $order_info['order_id']]);
}
return $result;
}
}
}

View File

@@ -0,0 +1,27 @@
<?php
/**
* Niushop商城系统 - 团队十年电商经验汇集巨献!
* =========================================================
* Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
* ----------------------------------------------
* 官方网址: https://www.niushop.com
* =========================================================
*/
namespace app\event\order;
use app\model\order\OrderCommon;
/**
* 订单自动完成
*/
class CronOrderComplete
{
// 行为扩展的执行入口必须是run
public function handle($data)
{
$order = new OrderCommon();
//订单自动完成
return $order->orderComplete($data['relate_id']);
}
}

View File

@@ -0,0 +1,31 @@
<?php
/**
* Niushop商城系统 - 团队十年电商经验汇集巨献!
* =========================================================
* Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
* ----------------------------------------------
* 官方网址: https://www.niushop.com
* =========================================================
*/
namespace app\event\order;
use app\model\order\OrderCommon;
/**
* 订单自动收货
*/
class CronOrderTakeDelivery
{
// 行为扩展的执行入口必须是run
public function handle($data)
{
$order = new OrderCommon();
$order_info_result = $order->getOrderInfo([ ['order_id', '=', $data['relate_id'] ] ], 'order_status');
if (isset($order_info_result['data']['order_status']) && $order_info_result['data']['order_status'] != 10) {
//订单自动收货
return $order->orderCommonTakeDelivery($data['relate_id']);
}
}
}

View File

@@ -0,0 +1,30 @@
<?php
/**
* Niushop商城系统 - 团队十年电商经验汇集巨献!
* =========================================================
* Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
* ----------------------------------------------
* 官方网址: https://www.niushop.com
* =========================================================
*/
namespace app\event\order;
use app\model\message\Message;
use app\model\order\OrderCommon;
/**
* 订单催付通知
*/
class CronOrderUrgePayment
{
// 行为扩展的执行入口必须是run
public function handle($params)
{
$order_info = ( new OrderCommon() )->getOrderInfo([ [ 'order_id', '=', $params[ 'relate_id' ] ], [ 'order_status', '=', OrderCommon::ORDER_CREATE ] ], 'site_id')[ 'data' ];
if (!empty($order_info)) {
( new Message() )->sendMessage([ 'keywords' => 'ORDER_URGE_PAYMENT', 'order_id' => $params[ 'relate_id' ], 'site_id' => $order_info[ 'site_id' ] ]);
}
return success();
}
}

39
app/event/order/OfflinePay.php Executable file
View File

@@ -0,0 +1,39 @@
<?php
/**
* Niushop商城系统 - 团队十年电商经验汇集巨献!
* =========================================================
* Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
* ----------------------------------------------
* 官方网址: https://www.niushop.com
* =========================================================
*/
namespace app\event\order;
use app\model\order\OrderCommon;
/**
* 订单支付成功同步事件
*/
class OfflinePay
{
/**
* 线下支付提交后记录支付方式
* @param $pay_info
* @return array|void
*/
public function handle($pay_info)
{
if($pay_info['event'] == 'OrderPayNotify'){
$order_model = new OrderCommon();
$pay_type_list = $order_model->getPayType();
$res = $order_model->orderUpdate([
'pay_type' => $pay_info['pay_type'],
'pay_type_name' => $pay_type_list[$pay_info['pay_type']] ?? '',
], [['out_trade_no', '=', $pay_info['out_trade_no']]]);
return $res;
}
}
}

View File

@@ -0,0 +1,64 @@
<?php
/**
* Niushop商城系统 - 团队十年电商经验汇集巨献!
* =========================================================
* Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
* ----------------------------------------------
* 官方网址: https://www.niushop.com
* =========================================================
*/
namespace app\event\order;
use app\model\member\Member;
use app\model\member\MemberAccount;
use app\model\member\MemberLevel;
use app\model\order\OrderCommon;
/**
* 订单完成事件
*/
class OrderComplete
{
// 行为扩展的执行入口必须是run
public function handle($data)
{
//订单返还积分
$order_model = new OrderCommon();
$condition = [
[ 'order_id', '=', $data[ 'order_id' ] ]
];
$order_info = $order_model->getOrderInfo($condition, 'order_money,order_status,site_id,member_id')[ 'data' ] ?? [];
//如果缺失已完成
if ($order_info[ 'order_status' ] == 10) {
//会员等级 计算积分返还比率
$site_id = $order_info[ 'site_id' ];
$member_id = $order_info[ 'member_id' ];
//存在散客的情况
if ($member_id > 0) {
$member_model = new Member();
$member_info_result = $member_model->getMemberInfo([ [ 'member_id', '=', $member_id ], [ 'site_id', '=', $site_id ] ], 'member_level');
$member_info = $member_info_result[ 'data' ];
if ($member_info[ 'member_level' ] > 0) {
$member_level_model = new MemberLevel();
$member_level_info_result = $member_level_model->getMemberLevelInfo([ [ 'level_id', '=', $member_info[ 'member_level' ] ], [ 'site_id', '=', $site_id ] ], 'point_feedback');
$member_level_info = $member_level_info_result[ 'data' ];
if ($member_level_info[ 'point_feedback' ] > 0) {
//计算返还的积分
$point = round($order_info[ 'order_money' ] * $member_level_info[ 'point_feedback' ]);
$member_account_model = new MemberAccount();
$result = $member_account_model->addMemberAccount($site_id, $member_id, 'point', $point, 'order', '会员消费回馈积分', '会员消费奖励发放');
if ($result[ 'code' ] < 0) {
return $result;
}
}
}
}
}
return $order_model->success();
}
}

43
app/event/order/OrderCreate.php Executable file
View File

@@ -0,0 +1,43 @@
<?php
/**
* Niushop商城系统 - 团队十年电商经验汇集巨献!
* =========================================================
* Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
* ----------------------------------------------
* 官方网址: https://www.niushop.com
* =========================================================
*/
namespace app\event\order;
use app\model\goods\Cart;
use app\model\system\Stat;
/**
* 订单支付后店铺点单计算
*/
class OrderCreate
{
/**
* 订单创建后事件
* @param unknown $data
*/
public function handle($data)
{
/** @var \app\model\order\OrderCreate $order_object */
$order_data = $data['create_data'];
$site_id = $order_data['site_id'];
$order_id = $order_data['order_id'];
$member_id = $order_data['member_id'];
//添加统计
$stat = new Stat();
return $stat->switchStat([ 'type' => 'order_create', 'data' => [
'site_id' => $site_id,
'order_id' => $order_id,
'member_id' => $member_id,
'order_data' => $order_data
] ]);
}
}

View File

@@ -0,0 +1,97 @@
<?php
/**
* Niushop商城系统 - 团队十年电商经验汇集巨献!
* =========================================================
* Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
* ----------------------------------------------
* 官方网址: https://www.niushop.com
* =========================================================
*/
namespace app\event\order;
use app\model\goods\Cart;
use app\model\message\Message;
use app\model\order\OrderCommon;
use app\model\order\OrderLog;
use app\model\system\Stat;
/**
* 订单创建后事件
*/
class OrderCreateAfter
{
/**
* 传入订单信息
* @param unknown $data
*/
public function handle($data)
{
//添加自动关闭事件
/** @var \app\model\order\OrderCreate $order_object */
$order_object = $data['order_object'];
//清理订单缓存
$order_object->deleteOrderCache($order_object->order_key);
$order_data = $data['create_data'];
$site_id = $order_data['site_id'];
$order_id = $order_data['order_id'];
$member_id = $order_data['member_id'];
// $site_id = $order_object->site_id;
// $order_id = $order_object->order_id;
// $member_id = $order_object->member_id;
//添加自动关闭事件
$order_object->addOrderCronClose();
//写日志
$log_data = $order_data['log'] ?? [];
if(!$log_data){
//记录订单日志 start
//获取用户信息
$member_info = $order_object->member_account;
$buyer_name = !empty($member_info['nickname']) ? '【' . $member_info['nickname'] . '】' : '';
$log_data = [
'order_id' => $order_id,
'action' => '买家下单了',
'uid' => $member_id,
'nick_name' => $member_info['nickname'],
'action_way' => 1,
'order_status' => 0,
'order_status_name' => $order_object->order_type['order_status']['name']
];
}
$order_common_model = new OrderCommon();
OrderLog::addOrderLog($log_data, $order_common_model);
//记录订单日志 end
//清除购物车数据
$cart_ids = $order_object->cart_ids;
if (!empty($cart_ids)) {
$cart = new Cart();
$data_cart = [
'cart_id' => $cart_ids,
'member_id' => $member_id
];
if ($order_object->jielong_id == 0) {
$cart->deleteCart($data_cart);
}
}
//发送消息
if($member_id > 0){
//订单创建发消息
$message_model = new Message();
$message_model->sendMessage(['keywords' => 'ORDER_CREATE', 'order_id' => $order_id, 'site_id' => $site_id]);
}
//添加统计
$stat = new Stat();
$stat->switchStat([ 'type' => 'order_create', 'data' => [
'site_id' => $site_id,
'order_id' => $order_id,
'member_id' => $member_id,
'order_data' => $order_data
] ]);
return success();
}
}

29
app/event/order/OrderPay.php Executable file
View File

@@ -0,0 +1,29 @@
<?php
/**
* Niushop商城系统 - 团队十年电商经验汇集巨献!
* =========================================================
* Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
* ----------------------------------------------
* 官方网址: https://www.niushop.com
* =========================================================
*/
namespace app\event\order;
use app\model\system\Stat;
/**
* 订单支付成功同步事件
*/
class OrderPay
{
/**
* 传入订单信息
* @param unknown $data
*/
public function handle($data)
{
return success();
}
}

View File

@@ -0,0 +1,31 @@
<?php
/**
* Niushop商城系统 - 团队十年电商经验汇集巨献!
* =========================================================
* Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
* ----------------------------------------------
* 官方网址: https://www.niushop.com
* =========================================================
*/
namespace app\event\order;
use app\model\system\Stat;
/**
* 订单支付成功异步事件
*/
class OrderPayAfter
{
/**
* 传入订单信息
* @param unknown $data
*/
public function handle($data)
{
//添加统计
$stat = new Stat();
return $stat->switchStat([ 'type' => 'order_pay', 'data' => $data ]);
}
}

View File

@@ -0,0 +1,29 @@
<?php
/**
* Niushop商城系统 - 团队十年电商经验汇集巨献!
* =========================================================
* Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
* ----------------------------------------------
* 官方网址: https://www.niushop.com
* =========================================================
*/
namespace app\event\order;
use app\model\order\OrderCommon;
/**
* 订单异步回调执行
*/
class OrderPayNotify
{
// 行为扩展的执行入口必须是run
public function handle($data)
{
$order = new OrderCommon();
return $order->orderOnlinePay($data);
}
}

View File

@@ -0,0 +1,68 @@
<?php
/**
* Niushop商城系统 - 团队十年电商经验汇集巨献!
* =========================================================
* Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
* ----------------------------------------------
* 官方网址: https://www.niushop.com
* =========================================================
*/
namespace app\event\order;
use app\dict\order\OrderDict;
use app\model\member\Member;
use app\model\member\MemberAccount;
use app\model\member\MemberLevel;
use app\model\order\OrderCommon;
use app\model\verify\Verify;
/**
* 订单项退款完成后
*/
class OrderRefundFinish
{
// 行为扩展的执行入口必须是run
public function handle($data)
{
$order_info = $data['order_info'];
if (!empty($order_info) && in_array($order_info['order_type'], [OrderDict::store, OrderDict::virtual])) {
$order_goods_info = $data['order_goods_info'];
//核销商品操作
if ($order_info['order_type'] == OrderDict::store) {//自提订单
$verify_code = $order_info['delivery_code'];
} else //虚拟订单
$verify_code = $order_info['virtual_code'];
$verify_model = new Verify();
$verify_condition = [
['verify_code', '=', $verify_code]
];
$verify_info = $verify_model->getVerifyInfo($verify_condition)['data'] ?? [];
if (!empty($verify_info)) {
$json_data = $verify_info['data'];
$item_array = $json_data['item_array'];
foreach ($item_array as $k => $v) {
if ($v['order_goods_id'] == $order_goods_info['order_goods_id']) {
unset($item_array[$k]);
}
}
sort($item_array);
$json_data['item_array'] = $item_array;
$json_string = json_encode($json_data, JSON_UNESCAPED_UNICODE);
$verify_data = [
'verify_content_json' => $json_string
];
$verify_result = $verify_model->editVerify($verify_data, $verify_condition);
if ($verify_result['code'] < 0) {
return $verify_result;
}
}
}
}
}

View File

@@ -0,0 +1,30 @@
<?php
/**
* Niushop商城系统 - 团队十年电商经验汇集巨献!
* =========================================================
* Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
* ----------------------------------------------
* 官方网址: https://www.niushop.com
* =========================================================
*/
namespace app\event\order;
use app\model\order\OrderCommon;
/**
* 通过支付信息获取手机端订单详情路径
*/
class WapOrderDetailPathByPayInfo
{
public function handle($data)
{
if($data['event'] == 'OrderPayNotify'){
$order_common = new OrderCommon();
$order_info = $order_common->getOrderInfo([['out_trade_no', '=', $data['out_trade_no']]], 'order_id')['data'];
if(!empty($order_info)){
return '/pages/order/detail?order_id='.$order_info['order_id'];
}
}
}
}