komer45 / yii2-balance
这是一个余额模块
dev-master
2017-02-03 13:37 UTC
Requires
- php: >=5.4.0
- yiisoft/yii2: *
- yiisoft/yii2-bootstrap: *
Requires (Dev)
This package is not auto-updated.
Last update: 2024-09-23 14:24:44 UTC
README
这是实现用户钱包的模块。新用户创建时,会自动创建钱包,也可以为已存在的用户或尚未创建钱包的所有用户创建钱包,只需点击用户钱包页面上的相应按钮。安装
执行以下命令
php composer require komer45/yii2-balance "*"
或者将以下内容添加到 composer.json 文件中
"komer45/yii2-balance": "*",
然后执行
php composer update
接下来,迁移数据库
php yii migrate --migrationPath=vendor/komer45/yii2-balance/migrations
连接和配置
为了使用此模块,需要在配置中连接模块
'modules' => [
'balance' => [
'class' => 'komer45\balance\Module',
'adminRoles' => ['superadmin', 'administrator'],
'otherRoles' => ['manager', 'user'],
'currencyName' => 'баллов'
],
...
]
为了访问组件(在此模块中为执行),需要在相同的配置中连接调用
'components' => [
...
'balance' => [
'class' => 'komer45\balance\Balance'
],
...
]
如果打算与 yii2-partnership 模块一起使用此模块,则需要在 partnership 模块的配置中订阅此模块操作转账事件的回调
'partnership' => [ 'class' => 'komer45\partnership\Module', 'layout' => 'main', 'adminRoles' => ['superadmin', 'administrator'], 'on makePayment' => function($event){ $model = $event->model; $userId = Yii::$app->Partnership->getUserByPartnerId($model->partner_id); $balance = Yii::$app->balance->getUserScore($userId); Yii::$app->balance->addTransaction($balance->id, 'in', $model->sum, 'partnership rewads'); } ],
为了使钱包为用户自动创建,需要修改标准模型 'User'(common\models\User)如下
...
use komer45\balance\models\Score;
...
public function afterSave($p1, $p2)
{
$findUser = Score::find()->where(['user_id' => $this->getId()])->one();
if (!$findUser){
$userBalance = new Score;
$userBalance->user_id = $this->getId();
$userBalance->balance = 0;
if($userBalance->validate()){
return $userBalance->save();
} else die('Uh-oh, somethings went wrong!');
}
}
在同一个模型(下面)中,需要添加 getScore 方法,该方法负责获取用户的当前余额
public function getScore($userId = null)
{
if ($userId){
return $userScore = Score::find()->where(['user_id' => $userId])->one()->balance;
}
return $userScore = Score::find()->where(['user_id' => Yii::$app->user->id])->one()->balance;
}
如果连接的 User 模型不符合 'common\models\User',则需要在模块(Module.php)中设置它,修改 $userModule 变量;为了便于导航和告知用户余额数量,还提供了以下小部件
<?php
use komer45\balance\widgets\BalanceWidget; //Виджет для вывода пользователю его баланса со ссылкой на историю его транзакций
use komer45\balance\widgets\ScoreButtonWidget; //Виджет для перехода на страницу кошельков
use komer45\balance\widgets\TransactionButtonWidget; //Виджет для перехода на страницу транзакций
...
echo BalanceWidget::widget();
echo ScoreButtonWidget::widget();
echo TransactionButtonWidget::widget();
?>