jh-admin/addon/saas/model/DivideAccounts.php

88 lines
4.5 KiB
PHP

<?php
namespace addon\saas\model;
class DivideAccounts
{
/***
* 获取参与分账账号
* @param $data
* @return array
*/
public function getAccounts($data)
{
if (cache(json_encode($data) . 'is_commission')) { //如果是免用模式,则不参与分账
return [];
} else if ($json = cache(json_encode($data))) {
return json_decode($json, true);
}
$json = [
['website w', 's.agent_id=w.site_id', 'inner'],
['site_group g', 's.group_id=g.group_id', 'inner'],
];
$field = 's.fee_commission,s.is_commission,g.fee_type,g.fee_commission as group_fee_commission,w.agent_pid,w.is_platform_commission,w.web_contacts,w.web_phone,w.platform_commission_rate,w.agent_type,w.settlement_wecaht_mch_id,w.settlement_alipay_account,w.alipay_account_name,w.wecaht_account_name';
$siteInfo = model('site')->getInfo(['s.site_id' => $data['site_id']], $field, 's', $json);
$accounts = [];
if ($siteInfo) {
//检查平台抽佣
if ($siteInfo['is_commission'] == 1) {
cache(json_encode($data) . 'is_commission', 1, 3600);
return $accounts;
}
//获取平台抽佣
if (isset($siteInfo['is_platform_commission']) && $siteInfo['is_platform_commission'] && in_array($siteInfo['agent_type'], ['divide', 'divideAndSitefee'])) {
$platform = config('accounts');
$acc = [
'is_commission' => $siteInfo['is_commission'],
'realname' => $platform['realname'],
'mobile' => $platform['mobile'],
'alipay_account_name' => $platform['alipay']['realname'],
'settlement_alipay_account' => $platform['alipay']['account'],
'wecaht_account_name' => $platform['weapp']['realname'],
'settlement_wecaht_mch_id' => $platform['weapp']['account'],
'fee_commission' => $siteInfo['platform_commission_rate'] ?? 0,
'is_platform' => 1,
'reason' => '平台技术服务费'
];
$accounts[] = $acc;
}
//渠道分账套餐抽佣 指定渠道抽佣,套餐抽佣
if ($siteInfo['group_fee_commission'] > 0 || $siteInfo['fee_commission'] > 0) { //代理渠道商分账
$acc = [
'is_commission' => $siteInfo['is_commission'],
'realname' => $siteInfo['web_contacts'],
'mobile' => $siteInfo['web_phone'],
'alipay_account_name' => $siteInfo['alipay_account_name'],
'settlement_alipay_account' => $siteInfo['settlement_alipay_account'],
'wecaht_account_name' => $siteInfo['wecaht_account_name'],
'settlement_wecaht_mch_id' => $siteInfo['settlement_wecaht_mch_id'],
'fee_commission' => $siteInfo['fee_commission'] ? $siteInfo['fee_commission'] : $siteInfo['group_fee_commission'],
'is_platform' => 1,
'reason' => 'S2服务商服务费'
];
$accounts[] = $acc;
}
//渠道上级分佣
if ($siteInfo['agent_pid'] > 0) {
$agent_parent = model('website')->getInfo(['site_id' => $siteInfo['agent_pid']], 'web_contacts,web_phone,alipay_account_name,settlement_alipay_account,wecaht_account_name,settlement_wecaht_mch_id,channel_commission_rate');
$accounts[] = [
'is_commission' => $siteInfo['is_commission'],
'realname' => $agent_parent['web_contacts'],
'mobile' => $agent_parent['web_phone'],
'alipay_account_name' => $agent_parent['alipay_account_name'],
'settlement_alipay_account' => $agent_parent['settlement_alipay_account'],
'wecaht_account_name' => $agent_parent['wecaht_account_name'],
'settlement_wecaht_mch_id' => $agent_parent['settlement_wecaht_mch_id'],
'fee_commission' => $agent_parent['channel_commission_rate'] ?: 1,
'is_platform' => 1,
'reason' => 'S2服务商服务费'
];
}
}
if ($accounts) {
cache(json_encode($data) . 'is_commission', null);
cache(json_encode($data), json_encode($accounts), 3600);
}
return $accounts;
}
}