146 lines
5.4 KiB
PHP
146 lines
5.4 KiB
PHP
<?php
|
||
// +----------------------------------------------------------------------
|
||
// | 作者:修缘 联系QQ:278896498 QQ群:1054861244
|
||
// | 声明:未经作者许可,禁止倒卖等商业运营,违者必究
|
||
// | 另接php业务,网站制作、代理后台、gm后台、支付对接等
|
||
// +----------------------------------------------------------------------
|
||
// | 创建时间: 2022/1/8 16:43
|
||
// +----------------------------------------------------------------------
|
||
|
||
namespace app\common\model;
|
||
|
||
use app\admin\model\AgencyUser;
|
||
|
||
class Revenue extends Model
|
||
{
|
||
// 自定义选择数据
|
||
|
||
|
||
public $softDelete = false;
|
||
protected $autoWriteTimestamp = true;
|
||
protected $createTime = 'create_time';
|
||
protected $updateTime = 'update_time';
|
||
|
||
protected $specialTimeFiled = 'create_time';
|
||
//可搜索字段
|
||
protected $searchField = ['role_id', 'cdk_code', 'account', ];
|
||
|
||
//可作为条件的字段
|
||
protected $whereField = ['agency'];
|
||
|
||
//可做为时间
|
||
protected $timeField = ['create_time'];
|
||
|
||
|
||
public function scopeSon($query, $son_agency)
|
||
{
|
||
$query->whereIn('agency', $son_agency);
|
||
}
|
||
|
||
|
||
public function scopeDirectlySon($query, $directlySon)
|
||
{
|
||
$query->whereIn('agency', $directlySon);
|
||
}
|
||
|
||
public function agencyId()
|
||
{
|
||
return $this->belongsTo(AgencyUser::class, 'agency', 'username');
|
||
}
|
||
public static function get_count_agency_amount(array $param, string $agency, array $cdk_code)
|
||
{
|
||
$agency_result = AgencyUser::where(['username' => $agency])->with([
|
||
'parent' => function ($query) {
|
||
$query->field('id, username, parent_id, grandpa_id, tax');
|
||
},
|
||
'grandpa' => function ($query) {
|
||
$query->field('id, username, parent_id, grandpa_id, tax');
|
||
},
|
||
])->field('id, username, level, parent_id, grandpa_id, tax')->find();
|
||
|
||
|
||
$money = round(($agency_result['tax'] / 100) * $cdk_code['money'], 2);
|
||
$data = [
|
||
'amount' => $cdk_code['money'],
|
||
'money' => $money,
|
||
'account' => $param['account'],
|
||
'agency' => $agency,
|
||
'role_id' => $param['role_id'],
|
||
'cdk_code' => $param['cdk_code'],
|
||
'create_time' => time(),
|
||
];
|
||
$sql[] = self::fetchSql(true)->insert($data);
|
||
$sql[] = AgencyUser::fetchSql(true)->whereIn('username', $agency)
|
||
->setInc('money', $money);
|
||
|
||
switch ($agency_result['level']) {
|
||
case 2 :
|
||
if (!empty($agency_result['parent'])) {
|
||
$money = round(($agency_result['parent']['tax'] / 100) * $cdk_code['money'], 2);
|
||
$data = [
|
||
'amount' => $cdk_code['money'],
|
||
'money' => $money,
|
||
'account' => $param['account'],
|
||
'agency' => $agency_result['parent']['username'],
|
||
'role_id' => $param['role_id'],
|
||
'cdk_code' => $param['cdk_code'],
|
||
'create_time' => time(),
|
||
];
|
||
$sql[] = self::fetchSql(true)->insert($data);
|
||
$sql[] = AgencyUser::fetchSql(true)
|
||
->whereIn('username', $agency_result['parent']['username'])
|
||
->setInc('money', $money);
|
||
}
|
||
break;
|
||
|
||
case 3 :
|
||
if (!empty($agency_result['parent'])) {
|
||
$money = round(($agency_result['parent']['tax'] / 100) * $cdk_code['money'], 2);
|
||
$data = [
|
||
'amount' => $cdk_code['money'],
|
||
'money' => $money,
|
||
'account' => $param['account'],
|
||
'agency' => $agency_result['parent']['username'],
|
||
'role_id' => $param['role_id'],
|
||
'cdk_code' => $param['cdk_code'],
|
||
'create_time' => time(),
|
||
];
|
||
$sql[] = self::fetchSql(true)->insert($data);
|
||
$sql[] = AgencyUser::fetchSql(true)
|
||
->whereIn('username', $agency_result['parent']['username'])
|
||
->setInc('money', $money);
|
||
}
|
||
if (!empty($agency_result['grandpa'])) {
|
||
$money = round(($agency_result['grandpa']['tax'] / 100) * $cdk_code['money'], 2);
|
||
$data = [
|
||
'amount' => $cdk_code['money'],
|
||
'money' => $money,
|
||
'account' => $param['account'],
|
||
'agency' => $agency_result['grandpa']['username'],
|
||
'role_id' => $param['role_id'],
|
||
'cdk_code' => $param['cdk_code'],
|
||
'create_time' => time(),
|
||
];
|
||
$sql[] = self::fetchSql(true)->insert($data);
|
||
$sql[] = AgencyUser::fetchSql(true)
|
||
->whereIn('username', $agency_result['grandpa']['username'])
|
||
->setInc('money', $money);
|
||
}
|
||
break;
|
||
}
|
||
self::startTrans();
|
||
try {
|
||
foreach ($sql as $key => $value) {
|
||
self::execute($value);
|
||
}
|
||
self::commit();
|
||
return true;
|
||
} catch (\Exception $exception) {
|
||
self::rollback();
|
||
return false;
|
||
}
|
||
}
|
||
|
||
|
||
}
|