問題描述:
返傭金額計算錯誤導致無法申請退款等問題
解決辦法:
找到文件:app/services/agent/AgentLevelServices.php 214~247行
替換getAgentLevelBrokerage方法的代碼為
public function getAgentLevelBrokerage(int $uid, $userInfo = [])
{
$one_brokerage_up = $two_brokerage_up = $spread_one_uid = $spread_two_uid = 0;
if (!$uid) {
return [$one_brokerage_up, $two_brokerage_up, $spread_one_uid, $spread_two_uid];
}
//商城分銷是否開啟
if (!sys_config('brokerage_func_status')) {
return [$one_brokerage_up, $two_brokerage_up, $spread_one_uid, $spread_two_uid];
}
/** @var UserServices $userServices */
$userServices = app()->make(UserServices::class);
if (!$userInfo) {
$userInfo = $userServices->getUserInfo($uid);
}
if (!$userInfo) {
return [$one_brokerage_up, $two_brokerage_up, $spread_one_uid, $spread_two_uid];
}
//獲取上級uid || 開啟自購返回自己uid
$spread_one_uid = $userServices->getSpreadUid($uid, $userInfo);
$one_agent_level = 0;
$two_agent_level = 0;
$spread_two_uid = 0;
if ($spread_one_uid > 0 && $one_user_info = $userServices->getUserInfo($spread_one_uid)) {
$one_agent_level = $one_user_info['agent_level'] ?? 0;
$spread_two_uid = $userServices->getSpreadUid($spread_one_uid, $one_user_info, false);
if ($spread_two_uid > 0 && $two_user_info = $userServices->getUserInfo($spread_two_uid)) {
$two_agent_level = $two_user_info['agent_level'] ?? 0;
}
}
$one_brokerage_up = $one_agent_level ? ($this->getLevelInfo($one_agent_level)['one_brokerage'] ?? 0) : 0;
$two_brokerage_up = $two_agent_level ? ($this->getLevelInfo($two_agent_level)['two_brokerage'] ?? 0) : 0;
return [$one_brokerage_up, $two_brokerage_up, $spread_one_uid, $spread_two_uid];
}
實際更改的代碼如圖紅框所示