halumein/yii2-balance

这是一个平衡模块

安装: 44

依赖: 0

建议者: 0

安全性: 0

星标: 0

关注者: 1

分支: 0

公开问题: 0

类型:yii2-extension

dev-master 2017-08-01 06:09 UTC

This package is not auto-updated.

Last update: 2024-09-23 06:28:13 UTC


README

这是一个用于实现用户钱包的模块。新用户会自动创建钱包,也可以为已存在的用户创建钱包,或者为所有尚未创建钱包的用户,通过点击用户钱包页面上的相应按钮来创建。安装

执行以下命令

php composer require halumein/yii2-balance "*"

或者在 composer.json 中添加

"halumein/yii2-balance": "*",

然后执行

php composer update

接下来,迁移数据库

php yii migrate --migrationPath=vendor/halumein/yii2-balance/migrations

连接和配置

要使用此模块,需要在配置中连接模块

	'modules' => [
		'balance' => [
				'class' => 'halumein\balance\Module',
				'adminRoles' => ['superadmin', 'administrator'],
				'otherRoles' => ['manager', 'user'],
				'currencyName' => 'баллов'
				],
	...
	]

连接组件

	'components' => [
	...
		'balance' => [
			'class' => 'halumein\balance\Balance'
		],
	...
	]

以下方法可用(更多详情请参阅 balance 组件)

	// начислить 500 баллов на кошелёк с id 12
	\Yii::$app->balance->addFounds(12, 500, 'Начисление бонусных баллов по акции', 123456);
	\Yii::$app->balance->removeFounds(12, 250, 'Оплата заказа 1234125');

为了使钱包自动为用户创建,需要修改标准模型 'User'(commmon\models\User)如下

...
use halumein\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 halumein\balance\widgets\BalanceWidget;			 //Виджет для вывода пользователю его баланса со ссылкой на историю его транзакций
use halumein\balance\widgets\ScoreButtonWidget;		 //Виджет для перехода на страницу кошельков
use halumein\balance\widgets\TransactionButtonWidget; //Виджет для перехода на страницу транзакций
...
echo BalanceWidget::widget();
echo ScoreButtonWidget::widget();
echo TransactionButtonWidget::widget();
?>