146 lines
5.4 KiB
PHP
Raw Permalink Normal View History

<?php
// +----------------------------------------------------------------------
// | 作者:修缘 联系QQ278896498 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;
}
}
}