devfutures/sources

完整节点库


README

如何安装

composer require devfutures/sources

安装后执行命令

php artisan libair:install
  • config/emitters.php - 复制文件
  • App/LibAir/ - 将所有库复制到目录
  • config/app.php - 更改加载libair的提供者
php artisan migrate

App\User添加特质

use Tymon\JWTAuth\Contracts\JWTSubject;
use Emitters\UsersData\Traits\AddUpline;

class User extends Authenticatable implements JWTSubject
{
    use Notifiable, AddUpline;

打开文件App\Http\Kernel.php

protected $middleware = [
    // ...
    \Barryvdh\Cors\HandleCors::class,
]

protected $routeMiddleware = [
    // ...
    'jwt.verify' => \Emitters\LibrariesAir\Middleware\JwtMiddleware::class,
]

开发包

安装laravel最新版本

composer create-project --prefer-dist laravel/laravel dev_futures

devfutures/sources/docker.zip将docker文件添加到主目录 - 解压缩

运行docker

docker-compose up -d
docker-compose exec app bash
  • https://:3099 - 网站
  • https://:8989 - phpmyadmin
  • DB name - emitters
  • DB user - root
  • DB password - root

创建目录packages/并将devfutures/sources克隆到git

添加到文件composer.json

"autoload": {
	"psr-4": {
		"Emitters\\": "packages/DevFutures/Sources/src/Emitters/"
    }
}

将提供者添加到config/app.php providers

Emitters\AdminControl\AdminControlServiceProvider::class,
Emitters\Balance\BalanceServiceProvider::class,
Emitters\ConvertingCurrencyRate\ConvertingCurrencyRateServiceProvider::class,
Emitters\DepositPlans\DepositPlansServiceProvider::class,
Emitters\DepositUsers\DepositUsersServiceProvider::class,
Emitters\Faq\FaqServiceProvider::class,
Emitters\LibrariesAir\LibrariesAirServiceProvider::class,
Emitters\News\NewsManagerServiceProvider::class,
Emitters\PaymentSystems\PaymentSystemsServiceProvider::class,
Emitters\UsersData\UsersDataServiceProvider::class,

支付系统

在代码中使用

use App\LibrariesAir\PaymentSystems\PaymentSystemsManager;
function load(PaymentSystemsManager $payment_systems_manager){
	// Get list from db
    $payment_systems_manager->get();
}

$payment_systems_manager = app()->make('libair.paymentsystems');
// Get list from db
$payment_systems_manager->get();

// Get balance and users wallet
$payment_systems_manager->getAll(App\User::find(1));

获取未修改的支付系统列表

public function get(array $sort = ['sort', 'asc']);

根据标识符更改支付系统

public function change($id, array $data, $field = 'id');

添加支付系统

public function addPaymentSystem(array $data);

根据标识符删除支付系统

public function destroy($id, $field = 'id');

恢复已删除的支付系统

public function restore($id, $field = 'id');

根据标识符获取支付系统 1个结果

public function getOne($id, $field = 'id');

获取带有钱包和余额的支付系统

public function getAll($user, array $sort = ['sort', 'asc']);

添加区块链链接的修改器

public function addBlockchainLink($currency, $transaction);

区块链支付链接的修改器

public function addBlockchainPayLink($currency, $value, $amount);

带有用户钱包的支付系统

abstract protected function addWallets($user, $payment_system);

带有余额的支付系统

abstract protected function addBalance($user, $payment_system);

获取带有余额和钱包的支付系统

abstract protected function getWithWalletBalance($user, array $sort);

从支付系统中获取一个唯一值,例如仅获取唯一的title或currency,第二个参数是数组,表示需要从最终结果中排除

public function getPluckUniqValues($search_key = 'currency', $ignore = ['usd']);

余额

提取BalanceManager

通过IoC获取
$balanceManager = resolve('librariesair.balance');
使用type-hinting在控制器中使用
use App\LibrariesAir\Balance\BalanceManager;
...
public function index(BalanceManager $balanceManager) {
    ...
}

BalanceManager方法

获取所有用户的余额
$balanceManager->getAll($user, $paymentSystemIds, $original);
  • $user - User模型对象
  • $paymentSystemIds - 需要获取余额的支付系统id数组
  • $original - 如果指定为true,则获取未四舍五入的余额,默认为false
  • 返回类型 - 数组
四舍五入余额
$balanceManager->decimalBalance($balances);
  • $balances - 余额数组
  • 返回类型 - 数组
修改余额
$balanceManager->changeBalance($data);
$data - 修改余额的数据数组
$exampleData = [
    'user_id'           => 1, //id пользователя для которого необходимо изменить баланс.
    'payment_system_id' => 3, //id платежной системы
    'type'              => 'buy' // 'buy' в случае покупки, 'sell' в случае продажы.
];
  • 返回类型 - 布尔值 true/false.

存款计划

提取DepositPlansManager

通过IoC获取
$depositPlans = resolve('libair.depositplans');
使用type-hinting在控制器中使用
use App\LibrariesAir\DepositPlans\DepositPlansManager;
...
public function index(DepositPlansManager $depositPlans) {
    ...
}

创建/更新验证

use Emitters\DepositPlans\Requests\DepositPlanRequest;

function save(DepositPlanRequest $request, DepositPlansManager $depositPlans){
	$depositPlans->store($request->all());
}

DepositPlansManager方法

创建新计划
$balanceManager->store(array $data);
  • $data['name'] - 计划名称
  • $data['description'] - 计划描述
  • $data['duration_plan'] - 计划中的计提次数
  • $data['accrual_period'] - 存款计提周期(秒),24小时为86400秒
  • $data['status'] - (int) 0 - 不活跃,1 - 活跃,2 - 隐藏
  • $data['minimum_amount'] - 存款最低金额(USD)
  • $data['maximum_amount'] - 存款最高金额(USD)
  • $data['payments_days_percent'] - 数组,键为星期几,值为状态和百分比
  • $data['principal_return_percent'] - 存款到期后的回报百分比
  • 返回类型 - 模型对象
获取所有状态的所有可用计划列表
$balanceManger->getPlans();
根据标识符获取计划
$balanceManger->getPlanById($id);
根据金额获取计划
$balanceManger->getPlanByAmount($amount)
修改getPlans & getPlanById函数的结果
$balanceManger->modifyPlan();
盈亏平衡日期
$balanceManger->getBreakEvenDate($plan);
  • 添加值break_event - Carbon\Carbon;
存款关闭日期
$balanceManger->getDateCloseDeposit($plan);
  • 添加值deposit_close - Carbon\Carbon;
获取下次计提日期
$balanceManger->getNextAccruals($plan, $date = null);
获取计划的百分比
$balanceManger->getPercent($plan_id, $date = null);
  • 返回百分比或false
从计划中提取百分比,遍历数组payments_days_percent
$balanceManger->extractionPercent($plan, $date = null);
获取所有支付系统的可转换金额
$balanceManger->getMinMaxAmount($plan);
  • 添加值 minimum_amount_{CURRENCY} - 货币的最小金额
  • 添加值 maximum_amount_{CURRENCY} - 货币的最大金额
通过 bcmath( $amount*$percent/100) 计算利润总额
$balanceManger->getAmountToProfit(string $amount, string $percent);
用于存储每周百分比的大数组
$balanceManger->defaultPaymentDaysPercent();
在存入数据库前填充每周的计费
$balanceManger->comparePaymentDaysPercent(array $preCreatedData);

存款用户

提取DepositUsersManager

通过IoC获取
$depositUsers = resolve('libair.depositusers');
使用type-hinting在控制器中使用
use App\LibrariesAir\DepositUsers\DepositUsersManager;
...
public function index(DepositUsersManager $depositUsers) {
    ...
}

DepositUsersManager的方法

创建新的存款
$depositUsers->createDeposit($user, $plan, $amount, $payment_system);
  • App\User - 对象
  • Emitters\DepositPlans\Models\Deposit_Plans - 对象
  • amount - 存款金额
  • 支付系统ID
  • 返回类型 - 模型对象
用户活跃的存款
$depositUsers->getDepositUser(User $user);
获取具有计划的存款信息
$depositUsers->getDepositOne(int $deposit_id);
用户未激活的存款
$depositUsers->getDepositUserEnd(User $user);
所有用户的存款列表,带有分页导航和筛选
$depositUsers->getDeposits(array $filter = [])
更改一页中的存款数量
$depositUsers->setPaginateNum(20);
检查用户是否能根据计划条件拥有这么多存款
$this->checkCountDepositsUsers(User $user, Deposit_Plans $plan);
用户的存款数量,带有计划的额外条件
$depositUsers->countDepositsUsers(User $user, Deposit_Plans $plan = null);
更新存款金额
$depositUsers->updateDepositAmount($depositId = null, $amount, $fromBalance = false);
  • depositId - int 存款标识符
  • 需要添加到存款金额的金额
  • 是否从余额中添加操作