* @version : HUOSDK 8.0 */ namespace huo\controller\rate; use huo\controller\agent\Agent; use huo\controller\agent\AgentCache; use huo\controller\common\Base; use huo\logic\agent\AgentRateLogic; use huo\model\agent\AgentRateModel; use huolib\constant\AgentConst; use huolib\status\CommonStatus; use huolib\status\MemberStatus; use huolib\status\RateStatus; use huolib\status\SettleStatus; class PtbRate extends Base { private $agent_rate = 1.0; private $sub_agent_rate = 1.0; private $agent_id; public function __construct($agent_id = 0) { $this->agent_id = $agent_id; $this->setRate(); if (!empty($agent_id)) { $this->setARate($agent_id); } } /** * @return void */ public function setRate() { $_data = (new AgentRateLogic())->getDefaultInfo(); if (!empty($_data)) { $this->agent_rate = $_data['agent_rate']; $this->sub_agent_rate = $_data['sub_agent_rate']; } } /** * * @param int $agent_id * * @return false true 设置成功 false 设置失败 */ public function setARate($agent_id) { $_agent_logic = new AgentRateLogic(); $_data = $_agent_logic->getInfoByAgentId($agent_id); if (!empty($_data)) { $this->agent_rate = $_data['agent_rate']; $this->sub_agent_rate = $_data['sub_agent_rate']; } else { $_agent_class = new Agent(); $_role_type = $_agent_class->getRoleType($agent_id); if (AgentConst::isSubAgent($_role_type)) { $_parent_id = $_agent_class->getParentId($agent_id); $_data = $_agent_logic->getInfoByAgentId($_parent_id); if (!empty($_data)) { $this->agent_rate = $_data['sub_agent_rate']; } else { $this->agent_rate = $this->sub_agent_rate; } $this->sub_agent_rate = 1; } } return true; } /** * 获取折扣 * * @param int $agent_id * * @return float * */ public function getRate($agent_id = 0) { if (!empty($agent_id)) { $this->setARate($agent_id); } return $this->agent_rate; } /** * @return float */ public function getAgentRate() { return $this->agent_rate; } /** * 修改渠道折扣,不存在则新增 * * @param $agent_id * @param $agent_rate * @param float $agent_sub_rate * * @return array|bool */ public function updateRate($agent_id, $agent_rate, $agent_sub_rate = 1.00) { $_agent_data = AgentCache::ins()->getInfoByAgentId($agent_id); if (empty($_agent_data)) { $_code = MemberStatus::INVALID_PARAMS; return $this->huoError($_code, MemberStatus::getMsg($_code)); } $_data = [ 'agent_id' => $agent_id, 'agent_rate' => $agent_rate, 'sub_agent_rate' => $agent_sub_rate, ]; $_rate_check = new RateCheck(); $_rs = $_rate_check->checkDataParam($_data); if (RateStatus::NO_ERROR != $_rs) { return $_rate_check->retMsg($_rs); } $_agent_rate = (new AgentRateModel())->getDetail($agent_id); if (!empty($_agent_rate)) { $_rs = (new AgentRateModel())->updateData($_data, $agent_id); if (false === $_rs) { $_code = SettleStatus::INNER_ERROR; return $this->huoError($_code, SettleStatus::getMsg($_code)); } } else { $_rs = (new AgentRateModel())->addData($_data); if (false === $_rs) { $_code = SettleStatus::INNER_ERROR; return $this->huoError($_code, SettleStatus::getMsg($_code)); } } $_code = CommonStatus::NO_ERROR; return $this->huoSuccess($_code, CommonStatus::getMsg($_code)); } }