123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391 |
- <?php
- /**
- * RateCheck.php UTF-8
- * 参数校验
- *
- * @date : 2018/5/18 9:56
- *
- * @license 这不是一个自由软件,未经授权不许任何使用和传播。
- * @author : wuyonghong <wyh@huosdk.com>
- * @version : HUOSDK 8.0
- */
- namespace huoRate\controller;
- use huo\controller\common\Base;
- use huo\logic\agent\AgentLogic;
- use huo\model\user\UserModel;
- use huolib\constant\AgentConst;
- use huolib\constant\GameConst;
- use huolib\status\RateStatus;
- use huolib\tool\StrUtils;
- use huoRate\model\AgentGameRateModel;
- class RateCheck extends Base {
- const RATE_MAX = 1.0;
- const RATE_MIN = 0.01;
- const REBATE_MIN = 0.0;
- const REBATE_MAX = 990;
- const REWARD_MIN = 0.0;
- const REWARD_MAX = 990;
- /**
- * 返回信息
- *
- * @param int $code
- * @param string $msg
- * @param array $data
- *
- * @return array
- */
- public function retMsg($code, $msg = '', $data = []) {
- $_data['code'] = $code;
- $_data['msg'] = $msg;
- if (empty($msg)) {
- $_data['msg'] = RateStatus::getMsg($code);
- }
- $_data['data'] = $data;
- return $this->huoReturn($_data);
- }
- /**
- * @param int $app_id
- * @param int $agent_id
- * @param array $data
- *
- * @return array
- */
- public function checkParam($app_id = 0, $agent_id = 0, $data = []) {
- if (empty($agent_id)) {
- return $this->checkGameParam($app_id, $data);
- }
- $_role_type = (new AgentLogic())->getRoleTypeById($agent_id);
- if (AgentConst::ROLE_TYPE_GROUP == $_role_type) {
- return $this->checkGroupParam($app_id, $agent_id, $data);
- }
- return $this->checkAgentParam($app_id, $agent_id, $data);
- }
- /**
- * 校验游戏折扣参数
- *
- * @param int $app_id
- * @param array $data
- *
- * @return array
- */
- public function checkGameParam($app_id, $data) {
- $_rs = $this->checkDataParam($data);
- if (RateStatus::NO_ERROR != $_rs) {
- return $this->retMsg($_rs);
- }
- $_agr_model = new AgentGameRateModel();
- $_gr_data = $_agr_model->getInfoByGameAgent($app_id, 0);
- if (empty($_gr_data)) {
- return $this->retMsg(RateStatus::INVALID_PARAMS);
- }
- $_data = array_merge($_gr_data, $data);
- if (StrUtils::compareNumber($_data['sub_agent_rebate'], $_data['agent_rebate']) > 0) {
- $_code = RateStatus::SRB_MUST_SMALLER_ARB;
- return $this->retMsg($_code, RateStatus::getMsg($_code).$_data['agent_rebate'] * 100);
- }
- if (StrUtils::compareNumber($_data['sub_agent_rate'], $_data['agent_rate']) < 0) {
- $_code = RateStatus::SR_MUST_LARGER_AR;
- return $this->retMsg($_code, RateStatus::getMsg($_code).$_data['agent_rate'] * 10);
- }
- if (StrUtils::compareNumber($_data['mem_rebate'], $_data['agent_rebate']) > 0) {
- $_code = RateStatus::MRB_MUST_SMALLER_ARB;
- return $this->retMsg($_code, RateStatus::getMsg($_code).$_data['agent_rebate'] * 100);
- }
- if (StrUtils::compareNumber($_data['mem_rebate'], $_data['sub_agent_rebate']) > 0) {
- $_code = RateStatus::MRB_MUST_SMALLER_ARB;
- return $this->retMsg($_code, RateStatus::getMsg($_code).$_data['sub_agent_rebate'] * 100);
- }
- if (StrUtils::compareNumber($_data['mem_rate'], $_data['agent_rate']) < 0) {
- $_code = RateStatus::MR_MUST_LARGER_AR;
- return $this->retMsg($_code, RateStatus::getMsg($_code).$_data['agent_rate'] * 10);
- }
- if (StrUtils::compareNumber($_data['mem_rate'], $_data['sub_agent_rate']) < 0) {
- $_code = RateStatus::MR_MUST_LARGER_AR;
- return $this->retMsg($_code, RateStatus::getMsg($_code).$_data['sub_agent_rate'] * 10);
- }
- return $this->retMsg(RateStatus::NO_ERROR);
- }
- /**
- * 校验一级渠道折扣参数
- *
- * @param int $app_id
- * @param int $agent_id
- * @param array $data
- *
- * @return array
- */
- public function checkGroupParam($app_id, $agent_id, $data) {
- $_agr_data = (new AgentGameRateModel())->getInfoByGameAgent($app_id, $agent_id);
- $_data = array_merge($_agr_data, $data);
- $_rs = $this->checkDataParam($_data);
- if (RateStatus::NO_ERROR != $_rs) {
- return $this->retMsg($_rs);
- }
- if (StrUtils::compareNumber($_data['sub_agent_rebate'], $_data['agent_rebate']) > 0) {
- $_code = RateStatus::SRB_MUST_SMALLER_ARB;
- return $this->retMsg($_code, RateStatus::getMsg($_code).$_data['agent_rebate']);
- }
- if (StrUtils::compareNumber($_data['sub_agent_rate'], $_data['agent_rate']) < 0) {
- $_code = RateStatus::SR_MUST_LARGER_AR;
- return $this->retMsg($_code, RateStatus::getMsg($_code).$_data['agent_rate']);
- }
- if (StrUtils::compareNumber($_data['mem_rebate'], $_data['agent_rebate']) > 0) {
- $_code = RateStatus::MRB_MUST_SMALLER_ARB;
- return $this->retMsg($_code, RateStatus::getMsg($_code).$_data['agent_rebate']);
- }
- if (StrUtils::compareNumber($_data['mem_rebate'], $_data['sub_agent_rebate']) > 0) {
- $_code = RateStatus::MRB_MUST_SMALLER_ARB;
- return $this->retMsg($_code, RateStatus::getMsg($_code).$_data['sub_agent_rebate']);
- }
- if (StrUtils::compareNumber($_data['mem_rate'], $_data['agent_rate']) < 0) {
- $_code = RateStatus::MR_MUST_LARGER_AR;
- return $this->retMsg($_code, RateStatus::getMsg($_code).$_data['agent_rate']);
- }
- if (StrUtils::compareNumber($_data['mem_rate'], $_data['sub_agent_rate']) < 0) {
- $_code = RateStatus::MR_MUST_LARGER_AR;
- return $this->retMsg($_code, RateStatus::getMsg($_code).$_data['sub_agent_rate']);
- }
- return $this->retMsg(RateStatus::NO_ERROR);
- }
- /**
- * 校验二级渠道参数
- *
- * @param int $app_id
- * @param int $agent_id
- * @param array $data
- *
- * @return array
- */
- public function checkAgentParam($app_id, $agent_id, $data) {
- $_data = $data;
- $_agr_model = new AgentGameRateModel();
- $_agr_data = $_agr_model->getInfoByGameAgent($app_id, $agent_id);
- if (!empty($_agr_data)) {
- $_data = array_merge($_agr_data, $data);
- }
- $_rs = $this->checkDataParam($_data);
- if (RateStatus::NO_ERROR != $_rs) {
- return $this->retMsg($_rs);
- }
- $_parent_id = (new UserModel())->getParentIdById($agent_id);
- $_parent_agr_data = $_agr_model->getInfoByGameAgent($app_id, $_parent_id);
- if (empty($_parent_agr_data)) {
- $_parent_agr_data = $_agr_model->getInfoByGameAgent($app_id, 0);
- }
- if (empty($_parent_agr_data)) {
- $_code = RateStatus::INVALID_PARAMS;
- return $this->retMsg($_code);
- }
- if (StrUtils::compareNumber($_data['sub_agent_rebate'], $_parent_agr_data['agent_rebate']) > 0) {
- $_code = RateStatus::SRB_MUST_SMALLER_ARB;
- return $this->retMsg($_code, RateStatus::getMsg($_code).$_parent_agr_data['agent_rebate']);
- }
- if (StrUtils::compareNumber($_data['sub_agent_rate'], $_parent_agr_data['agent_rate']) < 0) {
- $_code = RateStatus::SR_MUST_LARGER_AR;
- return $this->retMsg($_code, RateStatus::getMsg($_code).$_parent_agr_data['sub_agent_rate']);
- }
- if (StrUtils::compareNumber($_data['sub_agent_reward'], $_parent_agr_data['agent_reward']) > 0) {
- $_code = RateStatus::SRW_MUST_SMALLER_ARW;
- return $this->retMsg($_code, RateStatus::getMsg($_code).$_parent_agr_data['agent_reward']);
- }
- if (StrUtils::compareNumber($_data['mem_rebate'], $_data['agent_rebate']) > 0) {
- $_code = RateStatus::MRB_MUST_SMALLER_ARB;
- return $this->retMsg($_code, RateStatus::getMsg($_code).$_data['agent_rebate']);
- }
- if (StrUtils::compareNumber($_data['mem_rate'], $_data['agent_rate']) < 0) {
- $_code = RateStatus::MR_MUST_LARGER_AR;
- return $this->retMsg($_code, RateStatus::getMsg($_code).$_data['agent_rate']);
- }
- return $this->retMsg(RateStatus::NO_ERROR);
- }
- /**
- * 先校验所有入参
- *
- * @param $data
- *
- * @return int
- */
- public function checkDataParam($data) {
- if (isset($data['promote_switch'])) {
- $_rs = $this->checkPromote($data['promote_switch']);
- if (RateStatus::NO_ERROR != $_rs) {
- return $_rs;
- }
- }
- // if (isset($data['game_rate'])) {
- // $_rs = $this->checkRate($data['game_rate']);
- // if (RateStatus::NO_ERROR != $_rs) {
- // return $_rs;
- // }
- // }
- if (isset($data['agent_rebate'])) {
- $_rs = $this->checkRebate($data['agent_rebate']);
- if (RateStatus::NO_ERROR != $_rs) {
- return $_rs;
- }
- }
- if (isset($data['sub_agent_rebate'])) {
- $_rs = $this->checkRebate($data['sub_agent_rebate']);
- if (RateStatus::NO_ERROR != $_rs) {
- return $_rs;
- }
- }
- if (isset($data['agent_rate'])) {
- $_rs = $this->checkRate($data['agent_rate']);
- if (RateStatus::NO_ERROR != $_rs) {
- return $_rs;
- }
- }
- if (isset($data['sub_agent_rate'])) {
- $_rs = $this->checkRate($data['sub_agent_rate']);
- if (RateStatus::NO_ERROR != $_rs) {
- return $_rs;
- }
- }
- if (isset($data['mem_rate'])) {
- $_rs = $this->checkRate($data['mem_rate']);
- if (RateStatus::NO_ERROR != $_rs) {
- return $_rs;
- }
- }
- if (isset($data['first_mem_rate'])) {
- $_rs = $this->checkRate($data['first_mem_rate']);
- if (RateStatus::NO_ERROR != $_rs) {
- return $_rs;
- }
- }
- if (isset($data['mem_rebate'])) {
- $_rs = $this->checkRebate($data['mem_rebate']);
- if (RateStatus::NO_ERROR != $_rs) {
- return $_rs;
- }
- }
- if (isset($data['first_mem_rebate'])) {
- $_rs = $this->checkRebate($data['first_mem_rebate']);
- if (RateStatus::NO_ERROR != $_rs) {
- return $_rs;
- }
- }
- if (isset($data['agent_reward'])) {
- $_rs = $this->checkReward($data['agent_reward']);
- if (RateStatus::NO_ERROR != $_rs) {
- return $_rs;
- }
- }
- if (isset($data['sub_agent_reward'])) {
- $_rs = $this->checkReward($data['sub_agent_reward']);
- if (RateStatus::NO_ERROR != $_rs) {
- return $_rs;
- }
- }
- return RateStatus::NO_ERROR;
- }
- /**
- * @param FLOAT $rate
- *
- * @return int
- */
- public static function checkRate($rate) {
- if (!is_numeric($rate)) {
- return RateStatus::RATE_IS_ERROR;
- }
- if ($rate < self::RATE_MIN) {
- return RateStatus::RATE_TOO_SMALL;
- }
- if ($rate > self::RATE_MAX) {
- return RateStatus::RATE_TOO_LARGE;
- }
- return RateStatus::NO_ERROR;
- }
- /**
- * @param FLOAT $rebate
- *
- * @return int
- */
- public static function checkRebate($rebate) {
- if (!is_numeric($rebate)) {
- return RateStatus::REBATE_IS_ERROR;
- }
- if ($rebate < self::REBATE_MIN) {
- return RateStatus::REBATE_TOO_SMALL;
- }
- if ($rebate > self::REBATE_MAX) {
- return RateStatus::REBATE_TOO_LARGE;
- }
- return RateStatus::NO_ERROR;
- }
- /**
- * @param FLOAT $reward
- *
- * @return int
- */
- public static function checkReward($reward) {
- if (!is_numeric($reward)) {
- return RateStatus::REWARD_IS_ERROR;
- }
- if ($reward < self::REWARD_MIN) {
- return RateStatus::REWARD_TOO_SMALL;
- }
- if ($reward > self::REWARD_MAX) {
- return RateStatus::REWARD_TOO_LARGE;
- }
- return RateStatus::NO_ERROR;
- }
- /**
- * @param $promote_switch
- *
- * @return int
- */
- public function checkPromote($promote_switch) {
- if (false == is_numeric($promote_switch)) {
- return RateStatus::INVALID_PARAMS;
- }
- if ($promote_switch < GameConst::GAME_PROMOTE_SWITCH_CHECK
- || $promote_switch > GameConst::GAME_PROMOTE_SWITCH_NO) {
- return RateStatus::INVALID_PARAMS;
- }
- return RateStatus::NO_ERROR;
- }
- }
|