ataman / order
适用于 Retail-pro 软件的 Ataman 订单
dev-develop
2022-03-16 13:24 UTC
Requires
- php: >=5.4.0
- 2amigos/yii2-chartjs-widget: ~2.0
- 2amigos/yii2-grid-view-library: *
- kartik-v/yii2-export: @dev
- kartik-v/yii2-grid: *
- kartik-v/yii2-mpdf: dev-master
- nex/yii2-datepicker: *
- rikcage/yii2-grid-column-select: *
- udokmeci/yii2-phone-validator: ~1.0.1
- yiisoft/yii2: *
- yiisoft/yii2-bootstrap: *
Requires (Dev)
This package is not auto-updated.
Last update: 2024-09-26 09:03:36 UTC
README
这是一个实现网站订单功能的模块。目前,订单中包含购物车元素,建议将 dvizh/yii2-cart 模块作为购物车服务使用。
功能
- 在后台查看和管理订单
- 在后台管理订单字段
- 在后台管理配送和支付方式
安装
执行以下命令
php composer require dvizh/yii2-order "@dev"
或者在 composer.json 中添加以下内容
"dvizh/yii2-order": "@dev",
然后执行
php composer update
接下来,迁移数据库
php yii migrate --migrationPath=vendor/dvizh/yii2-order/src/migrations
接下来,将模块与购物车关联。安装 dvizh/yii2-cart
创建方面
<?php
namespace common\aspects;
use dvizh\order\models\Element;
use Yii;
class OrderFilling extends \yii\base\Behavior
{
public function events()
{
return [
'create' => 'putElements'
];
}
public function putElements($event)
{
$order = $event->model;
foreach(yii::$app->cart->elements as $element) {
$elementModel = new Element;
$elementModel->setOrderId($order->id);
$elementModel->setAssigment($order->is_assigment);
$elementModel->setModelName($element->getModelName());
$elementModel->setName($element->getName());
$elementModel->setItemId($element->getItemId());
$elementModel->setCount($element->getCount());
$elementModel->setBasePrice($element->getPrice(false));
$elementModel->setPrice($element->getPrice());
$elementModel->setOptions(json_encode($element->getOptions()));
$elementModel->setDescription('');
$elementModel->saveData();
}
$order->base_cost = 0;
$order->cost = 0;
foreach($order->elements as $element) {
$order->base_cost += ($element->base_price*$element->count);
$order->cost += ($element->price*$element->count);
}
$order->save();
yii::$app->cart->truncate();
}
}
为了将订单模块与购物车关联,在配置中将方面分配给订单模块
'order' => [
'class' => 'dvizh\order\Module',
//...
'as order_filling' => '\common\aspects\OrderFilling',
],
作为模块安装
如果您计划对代码进行大量更改,最好将扩展作为模块安装。
从 Github 克隆扩展到所需文件夹
git clone https://github.com/dvizh/yii2-order.git
在 composer.json 中添加模块的路径
"autoload": {
"psr-4": {
"dvizh\\order\\": "common/modules/order"
}
}
运行 update
php composer update
进行迁移
php yii migrate --migrationPath=common/modules/order/migrations
添加到配置
'bootstrap' => ['dvizh\order\Bootstrap'],
如上所述与购物车关联。
连接和设置
在应用程序配置文件中添加 order 模块
'modules' => [
'order' => [
'class' => 'dvizh\order\Module',
'layoutPath' => 'frontend\views\layouts',
'successUrl' => '/page/thanks', //Страница, куда попадает пользователь после успешного заказа
'adminNotificationEmail' => 'test@yandex.ru', //Мыло для отправки заказов
],
//...
]
服务
模块自动注入到 yii2 (在 Service locator) 中的 order (服务) 组件,该组件可通过 yii::$app->order 在全局范围内访问,并提供以下服务
- get($id) - 通过 ID 获取订单
- getStatInMoth($month) - 获取当月订单统计
- getStatByDate($date) - 获取某天订单统计
- getStatByDatePeriod($dateStart, $dateStop) - 获取某段时间订单统计
- getStatByModelAndDatePeriod($model, $dateStart, $dateStop) - 获取特定模型某段时间订单统计
小部件
订单表单的输出由小部件 dvizh\order\widgets\OrderForm 负责
<?=OrderForm::widget();?>
“一键下单”按钮 - dvizh\order\widgets\OneClick
<?=OneClick::widget(['model' => $model]);?>
触发器
在 Module
- create - 创建订单
- delete_order - 删除订单
- delete_element - 删除订单元素
通过配置使用示例
'order' => [
'class' => 'dvizh\order\Module',
'on create' => function($event) {
send_sms(...); //Отправляем СМС оповещение
},
],
在线支付
要添加支付方式,请转到 ?r=/order/payment-type/index,添加新的支付方式,在“小部件”字段中指定将输出支付表单的小部件类。支付小部件需要单独安装。
- Paymaster.ru: dvizh/yii2-paymaster
- Liqpay: dvizh/yii2-liqpay
- Сбербанк: dvizh/yii2-sberbank-payment
截图
订单表单 主面板
订单搜索
统计