'youle', 'route' => 'agent', 'rpc' => 'query_player2', 'data' => array( 'agentid' => $agentID, 'playerid' => $playerID, ), ); $json_data = json_encode($playerData); $dd_ret = file_get_contents($urlLink . '?' . $json_data); //请求数据出错 if (!$dd_ret) return null; $playerInfo = json_decode($dd_ret, true); if(!is_array($playerInfo)) return null; return $playerInfo; } /** * 获取代理商的服务器地址 * 被请求方法示例:参数固定为RequestParameter和ReturnParameter对象,返回值固定为true(成功)和false(失败) * @param RequestParameter $inParam * @param ReturnParameter $outParam * @return bool */ public function serverAddress($inParam, $outParam) { $request_data = isset($inParam->biz_content) ? $inParam->biz_content : ''; if (!is_array($request_data)) { //参数格式错误 $outParam->SetErrors(ERRORCODE_INPARAMERROR, ERRORINFO_INPARAMERROR); return false; } $agentID = isset($request_data['agentid']) ? $request_data['agentid'] : ''; if (empty($agentID)) { $outParam->SetErrors(ERRORCODE_AGENTIDERROR, ERRORINFO_AGENTIDERROR); return false; } $channelID = isset($request_data['channelid']) ? $request_data['channelid'] : ''; if (empty($channelID)) { $outParam->SetErrors(ERRORCODE_CHANNELIDERROR, ERRORINFO_CHANNELIDERROR); return false; } $channelData = $this->PDO_Request(/** @lang text */ ' SELECT a.agen_agentid, a.agen_name, a.agen_server, b.agch_channelid, b.agch_channelname, b.agch_service_tel, b.agch_service_wechat, b.agch_youle_appid, b.agch_youle_devkey, b.agch_youle_busiid, b.agch_pay_appid, b.agch_pay_devkey, b.agch_pay_marketid FROM agent a LEFT JOIN agent_channel b ON a.agen_agentid=b.agch_agentid WHERE a.agen_agentid=? AND b.agch_channelid=? ', $agentID, $channelID); if (!is_array($channelData)) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } if (count($channelData) < 1) { $outParam->SetErrors(ERRORCODE_NODATAERROR, ERRORINFO_NODATAERROR); return false; } $db_agent_info = $this->PDO_Request(/** @lang text */ ' SELECT html_buyroomcard, logo, html_applysales FROM config_agent WHERE agent_id=?', $agentID); if (!is_array($db_agent_info)) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } if (count($db_agent_info) < 1) { $outParam->SetErrors(ERRORCODE_AGENTNOTEXISTERROR, ERRORINFO_AGENTNOTEXISTERROR); return false; } $outParam->biz_content = array( 'state' => 0, 'error' => '', 'agentid' => $channelData[0]['agen_agentid'], 'agentname' => $channelData[0]['agen_name'], 'agentlogo' => $db_agent_info[0]['logo'], 'urlserver' => $channelData[0]['agen_server'], 'channelid' => $channelData[0]['agch_channelid'], 'channeltel' => $channelData[0]['agch_service_tel'], 'channelwechat' => $channelData[0]['agch_service_wechat'], 'html_buyroomcard' => $db_agent_info[0]['html_buyroomcard'], 'youle_appid' => $channelData[0]['agch_youle_appid'], 'youle_devkey' => $channelData[0]['agch_youle_devkey'], 'youle_busiid' => $channelData[0]['agch_youle_busiid'], 'youle_appid_pay' => $channelData[0]['agch_pay_appid'], 'youle_devkey_pay' => $channelData[0]['agch_pay_devkey'], 'youle_busiid_pay' => $channelData[0]['agch_pay_marketid'], 'html_applysales' => $db_agent_info[0]['html_applysales'], ); return true; } /** * 查询推荐人 * 被请求方法示例:参数固定为RequestParameter和ReturnParameter对象,返回值固定为true(成功)和false(失败) * @param RequestParameter $inParam * @param ReturnParameter $outParam * @return bool */ public function recommend($inParam, $outParam) { $request_data = isset($inParam->biz_content) ? $inParam->biz_content : ''; if (!is_array($request_data)) { //参数格式错误 $outParam->SetErrors(ERRORCODE_INPARAMERROR, ERRORINFO_INPARAMERROR); return false; } $agentID = isset($request_data['agentid']) ? $request_data['agentid'] : ''; if (empty($agentID)) { $outParam->SetErrors(ERRORCODE_AGENTIDERROR, ERRORINFO_AGENTIDERROR); return false; } $salesID = isset($request_data['salesid']) ? $request_data['salesid'] : ''; if (empty($salesID)) { $outParam->SetErrors(ERRORCODE_SALESIDERROR, ERRORINFO_SALESIDERROR); return false; } $db_data = $this->PDO_Request(/** @lang text */ ' SELECT saus_nickname, saus_avatar FROM sales_user WHERE saus_agentid = ? and saus_salesid = ?;', $agentID, $salesID); if (!is_array($db_data)) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } if (count($db_data) < 1) { $outParam->biz_content = array( 'state' => 1, 'error' => '未查到推荐人', ); return true; } $outParam->biz_content = array( 'state' => 0, 'salesid' => $salesID, 'name' => $db_data[0]['saus_nickname'], 'avatar' => $db_data[0]['saus_avatar'], ); return true; } /** * 绑定推荐人 代理绑定代理 * 被请求方法示例:参数固定为RequestParameter和ReturnParameter对象,返回值固定为true(成功)和false(失败) * @param RequestParameter $inParam * @param ReturnParameter $outParam * @return bool */ public function bindRecommend($inParam, $outParam) { $request_data = isset($inParam->biz_content) ? $inParam->biz_content : ''; if (!is_array($request_data)) { /// 参数格式错误 $outParam->SetErrors(ERRORCODE_INPARAMERROR, ERRORINFO_INPARAMERROR); return false; } $agent_id = @$request_data['agentid']; $channel_id = @$request_data['channelid']; $open_id = @$request_data['openid']; $union_id = @$request_data['unionid']; $sales_id = @$request_data['salesid']; if (empty($agent_id)) { $outParam->SetErrors(ERRORCODE_AGENTIDERROR, ERRORINFO_AGENTIDERROR); return false; } if (empty($open_id) && empty($union_id)) { $outParam->SetErrors(ERRORCODE_OPENIDERROR, ERRORINFO_OPENIDERROR); return false; } if (empty($sales_id)) { $outParam->SetErrors(ERRORCODE_SALESIDERROR, ERRORINFO_SALESIDERROR); return false; } $cmd = $this->NewMasterCommand(); $channel_info = $cmd ->select('agent_id', 'channel_id', 'sync_invitecode') ->from('ct_channel_list') ->where(['agent_id' => $agent_id, 'channel_id' => $channel_id]) ->request(); if (!$this->pdo_isdone()) { $outParam->seterrors($this->geterrorcode(), $this->geterrorinfo()); return false; } elseif (empty($channel_info)) { $outParam->SetErrors(ERRORCODE_AGENTNOTEXISTERROR, ERRORINFO_AGENTNOTEXISTERROR); return false; } else $sync_invitecode = intval($channel_info[0]['sync_invitecode']); $this->pdo_begintransaction(); try { $target = $cmd ->select('saus_salesid', 'saus_nickname', 'saus_avatar', 'saus_wechat', 'saus_tel', 'saus_parentid') ->from('sales_user') ->where([ 'saus_agentid' => $agent_id, 'saus_salesid' => $sales_id, ]) ->request(); if (!$this->pdo_isdone()) throw new Exception($this->geterrorinfo(), $this->geterrorcode()); elseif (empty($target)) throw new Exception(ERRORINFO_SALESNOTEXISTERROR, ERRORCODE_SALESNOTEXISTERROR); if (!empty($union_id)) { $source = $cmd ->select('saus_salesid', 'saus_parentid', 'player_id') ->from('sales_user') ->where([ 'saus_agentid' => $agent_id, 'saus_unionid' => $union_id, 'saus_salesman' => 1, ]) ->request(); } elseif(!empty($open_id)) { $source = $cmd ->select('saus_salesid', 'saus_parentid', 'player_id') ->from('sales_user') ->where([ 'saus_agentid' => $agent_id, 'saus_openid' => $open_id, 'saus_salesman' => 1, ]) ->request(); } else throw new Exception(ERRORINFO_INVALIDPARAMETER, ERRORCODE_INVALIDPARAMETER); if (!$this->pdo_isdone()) throw new Exception($this->geterrorinfo(), $this->geterrorcode()); elseif (empty($source)) throw new Exception(ERRORINFO_SALESNOTEXISTERROR, ERRORCODE_SALESNOTEXISTERROR); elseif ($target[0]['saus_parentid'] == $source[0]['saus_salesid']) throw new Exception(ERRORINFO_CANNOTBINDCHILD, ERRORCODE_CANNOTBINDCHILD); /// 修改代理表的上级代理和邀请码 $ret = $cmd ->update('sales_user') ->fields('saus_invitecode', 'saus_parentid') ->values($sales_id, $sales_id) ->where([ 'saus_agentid' => $agent_id, 'saus_salesid' => $source[0]['saus_salesid'], ]) ->execute(); if (!$ret) throw new Exception($this->geterrorinfo(), $this->geterrorcode()); if (0 != $sync_invitecode) /// 要同步邀请码 { /// 修改玩家表的邀请码 $ret = $cmd ->update('player') ->fields('play_invitecode') ->values($sales_id) ->where([ 'play_agentid' => $agent_id, 'play_playerid' => $source[0]['player_id'], ]) ->execute(); if (!$ret) throw new Exception($this->geterrorinfo(), $this->geterrorcode()); /// 记录绑定日志 $ret = $cmd ->insert('ct_user_process_log') ->fields('from_agent', 'from_channel', 'from_user', 'to_agent', 'to_channel', 'to_user', 'oper_type', 'oper_data', 'remark', 'oper_time', 'is_process') ->values($agent_id, $channel_id, $sales_id, $agent_id, $channel_id, $open_id, 101, $union_id, '来源用户为要绑定的代理,目标用户为要绑定的玩家。其中目标用户的userid为用户的openid,oper_data为用户unionid。', time(), 0) ->execute(); if (!$ret) throw new Exception($this->GetErrorInfo(), $this->GetErrorCode()); } $outParam->biz_content = array( 'state' => 0, 'salesid' => $target[0]['saus_salesid'], 'wechat' => $target[0]['saus_wechat'], 'tel' => $target[0]['saus_tel'], 'nickname' => $target[0]['saus_nickname'], 'avatar' => $target[0]['saus_avatar'], ); $this->PDO_Commit(); } catch(Exception $e) { $this->PDO_Rollback(); $outParam->SetErrors($e->getCode(), $e->getMessage()); return false; } return true; } /** * 我的人推荐 * 被请求方法示例:参数固定为RequestParameter和ReturnParameter对象,返回值固定为true(成功)和false(失败) * @param RequestParameter $inParam * @param ReturnParameter $outParam * @return bool */ public function myRecommend($inParam, $outParam) { $request_data = isset($inParam->biz_content) ? $inParam->biz_content : ''; if (!is_array($request_data)) { /// 参数格式错误 $outParam->SetErrors(ERRORCODE_INPARAMERROR, ERRORINFO_INPARAMERROR); return false; } $agent_id = @$request_data['agentid']; /// 代理 $channel_id = @$request_data['channelid']; /// 渠道 $sales_id = @$request_data['salesid']; /// 代理号 //$player_id = @$request_data['playerid']; /// 玩家号 $open_id = @$request_data['openid']; /// openid $union_id = @$request_data['unionid']; /// unionid $type = intval(@$request_data['type']); /// 类型(0:代理;1:玩家) if (empty($agent_id)) { $outParam->SetErrors(ERRORCODE_AGENTIDERROR, ERRORINFO_AGENTIDERROR); return false; } if (empty($channel_id)) { $outParam->SetErrors(ERRORCODE_CHANNELIDERROR, ERRORINFO_CHANNELIDERROR); return false; } $db_data = array(); $cmd = $this->NewMasterCommand(); if (0 == $type) /// 查代理信息上级信息 { $db_data = $cmd->Request(/** @lang text */ ' select p.saus_salesid, p.saus_nickname, p.saus_avatar from sales_user i inner join sales_user p on i.saus_agentid = p.saus_agentid and i.saus_channelid = p.saus_channelid and p.saus_salesid = i.saus_parentid and p.saus_salesid is not null where i.saus_agentid = ? and i.saus_channelid = ? and i.saus_salesid = ?', $agent_id, $channel_id, $sales_id ); } else { /// 先判断player表中是否绑定了邀请码 if (!empty($union_id)) $bindSalesInfo = $cmd->Request(/** @lang text */ ' select idx, play_playerid, play_invitecode from player where play_agentid = ? and play_channelid = ? and play_unionid = ?', $agent_id, $channel_id, $union_id ); else $bindSalesInfo = $cmd->Request(/** @lang text */ ' select idx, play_playerid, play_invitecode from player where play_agentid = ? and play_channelid = ? and play_openid = ?', $agent_id, $channel_id, $open_id ); if (!$this->PDO_IsDone()) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } if (empty($bindSalesInfo) || count($bindSalesInfo) < 1) { $outParam->SetErrors(ERRORCODE_PLAYERNOTEXISTERROR, ERRORINFO_PLAYERNOTEXISTERROR); return false; } $sales_id = $bindSalesInfo[0]['play_invitecode']; if (!empty($sales_id)) $db_data = $cmd->Request(/** @lang text */ ' select idx, saus_salesid, saus_nickname, saus_avatar from sales_user where saus_agentid = ? and saus_channelid = ? and saus_salesid = ?', $agent_id, $channel_id, $sales_id ); } if (!$this->PDO_IsDone()) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } if (count($db_data) > 0) $outParam->biz_content = array( 'parentid' => $db_data[0]['saus_salesid'], 'name' => $db_data[0]['saus_nickname'], 'avatar' => $db_data[0]['saus_avatar'], ); else $outParam->biz_content = array( 'parentid' => '', 'name' => '', 'avatar' => '', ); return true; } /** * 我的子代理 * 被请求方法示例:参数固定为RequestParameter和ReturnParameter对象,返回值固定为true(成功)和false(失败) * @param RequestParameter $inParam * @param ReturnParameter $outParam * @return bool */ public function myAgent($inParam, $outParam) { $request_data = isset($inParam->biz_content) ? $inParam->biz_content : ''; if (!is_array($request_data)) { //参数格式错误 $outParam->SetErrors(ERRORCODE_INPARAMERROR, ERRORINFO_INPARAMERROR); return false; } $agentID = isset($request_data['agentid']) ? $request_data['agentid'] : ''; if (empty($agentID)) { $outParam->SetErrors(ERRORCODE_AGENTIDERROR, ERRORINFO_AGENTIDERROR); return false; } $openID = isset($request_data['openid']) ? $request_data['openid'] : ''; if (empty($openID)) { $outParam->SetErrors(ERRORCODE_OPENIDERROR, ERRORINFO_OPENIDERROR); return false; } $db_data = $this->PDO_Request( 'call cp_sales_get_child(?,?);', $agentID, $openID ); if (!is_array($db_data)) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } $outParam->biz_content = array('childs' => $db_data); return true; } /** * 我的奖励 * 被请求方法示例:参数固定为RequestParameter和ReturnParameter对象,返回值固定为true(成功)和false(失败) * @param RequestParameter $inParam * @param ReturnParameter $outParam * @return bool */ public function myAward($inParam, $outParam) { $request_data = isset($inParam->biz_content) ? $inParam->biz_content : ''; if (!is_array($request_data)) { //参数格式错误 $outParam->SetErrors(ERRORCODE_INPARAMERROR, ERRORINFO_INPARAMERROR); return false; } $agentID = isset($request_data['agentid']) ? $request_data['agentid'] : ''; if (empty($agentID)) { $outParam->SetErrors(ERRORCODE_AGENTIDERROR, ERRORINFO_AGENTIDERROR); return false; } $openID = isset($request_data['openid']) ? $request_data['openid'] : ''; if (empty($openID)) { $outParam->SetErrors(ERRORCODE_OPENIDERROR, ERRORINFO_OPENIDERROR); return false; } $db_data = $this->PDO_Request( 'call cp_sales_get_award(?,?);', $agentID, $openID ); if (!is_array($db_data)) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } $outParam->biz_content = array('awards' => $db_data); return true; } /** * 领取奖励 * 被请求方法示例:参数固定为RequestParameter和ReturnParameter对象,返回值固定为true(成功)和false(失败) * @param RequestParameter $inParam * @param ReturnParameter $outParam * @return bool */ public function getAward($inParam, $outParam) { $request_data = isset($inParam->biz_content) ? $inParam->biz_content : ''; if (!is_array($request_data)) { //参数格式错误 $outParam->SetErrors(ERRORCODE_INPARAMERROR, ERRORINFO_INPARAMERROR); return false; } $agentID = isset($request_data['agentid']) ? $request_data['agentid'] : ''; if (empty($agentID)) { $outParam->SetErrors(ERRORCODE_AGENTIDERROR, ERRORINFO_AGENTIDERROR); return false; } $openID = isset($request_data['openid']) ? $request_data['openid'] : ''; if (empty($openID)) { $outParam->SetErrors(ERRORCODE_OPENIDERROR, ERRORINFO_OPENIDERROR); return false; } $awardID = isset($request_data['awardid']) ? $request_data['awardid'] : ''; if (empty($awardID)) { $outParam->SetErrors(ERRORCODE_AWARDIDERROR, ERRORINFO_AWARDIDERROR); return false; } $db_data = $this->PDO_Request( 'call cp_sales_accept_award(?,?,?);', $agentID, $openID, $awardID ); if (!is_array($db_data) || count($db_data) < 1) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } if (!isset($db_data[0]['result']) || intval($db_data[0]['result']) != 0) { $outParam->SetErrors($db_data[0]['result'], $db_data[0]['error']); return false; } $outParam->biz_content = array( 'state' => 0, 'roomcard' => isset($db_data[0]['myroomcard']) ? intval($db_data[0]['myroomcard']) : 0, 'awardstate' => isset($db_data[0]['mystate']) ? intval($db_data[0]['mystate']) : 0, ); return true; } /** * 查询个人代理 * 被请求方法示例:参数固定为RequestParameter和ReturnParameter对象,返回值固定为true(成功)和false(失败) * @param RequestParameter $inParam * @param ReturnParameter $outParam * @return bool */ public function queryAgent($inParam, $outParam) { $request_data = isset($inParam->biz_content) ? $inParam->biz_content : ''; if (!is_array($request_data)) { //参数格式错误 $outParam->SetErrors(ERRORCODE_INPARAMERROR, ERRORINFO_INPARAMERROR); return false; } $agentID = isset($request_data['agentid']) ? $request_data['agentid'] : ''; if (empty($agentID)) { $outParam->SetErrors(ERRORCODE_AGENTIDERROR, ERRORINFO_AGENTIDERROR); return false; } $openID = isset($request_data['openid']) ? $request_data['openid'] : ''; if (empty($openID)) { $outParam->SetErrors(ERRORCODE_OPENIDERROR, ERRORINFO_OPENIDERROR); return false; } $salesID = isset($request_data['salesid']) ? $request_data['salesid'] : ''; if (empty($salesID)) { $outParam->SetErrors(ERRORCODE_SALESIDERROR, ERRORINFO_SALESIDERROR); return false; } $db_data = $this->PDO_Request( 'call cp_sales_query_salesman(?,?,?);', $agentID, $openID, $salesID ); if (!is_array($db_data) || count($db_data) < 1) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } if (!isset($db_data[0]['result'])) { return false; } if (intval($db_data[0]['result']) != 0) { $outParam->biz_content = array( 'state' => $db_data[0]['result'], 'error' => $db_data[0]['error'], ); return true; } $dbSaleInfo = $this->PDO_Request(/** @lang text */ ' select saus_status, saus_bean from sales_user where saus_agentid=? and saus_salesid=?', $agentID, $salesID); if (!is_array($dbSaleInfo) || count($dbSaleInfo) < 1) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } $outParam->biz_content = array( 'state' => 0, 'salesid' => $db_data[0]['salesid'], 'salesname' => $db_data[0]['salesname'], 'roomcard' => $db_data[0]['salesroomcard'], 'salesstatus' => $dbSaleInfo[0]['saus_status'], 'bean' => $dbSaleInfo[0]['saus_bean'], ); return true; } /** * 获取绑定了我的邀请码的玩家列表 * 被请求方法示例:参数固定为RequestParameter和ReturnParameter对象,返回值固定为true(成功)和false(失败) * @param RequestParameter $inParam * @param ReturnParameter $outParam * @return bool */ public function myPlayer($inParam, $outParam) { $request_data = isset($inParam->biz_content) ? $inParam->biz_content : ''; if (!is_array($request_data)) { //参数格式错误 $outParam->SetErrors(ERRORCODE_INPARAMERROR, ERRORINFO_INPARAMERROR); return false; } $agentID = isset($request_data['agentid']) ? $request_data['agentid'] : ''; if (empty($agentID)) { $outParam->SetErrors(ERRORCODE_AGENTIDERROR, ERRORINFO_AGENTIDERROR); return false; } $openID = isset($request_data['openid']) ? $request_data['openid'] : ''; if (empty($openID)) { $outParam->SetErrors(ERRORCODE_OPENIDERROR, ERRORINFO_OPENIDERROR); return false; } $db_data = $this->PDO_Request( 'call cp_sales_get_myplayer(?,?);', $agentID, $openID ); if (!is_array($db_data)) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } $outParam->biz_content = array('list' => $db_data); return true; } /** * 下级玩家列表 * @param $inParam * @param $outParam * @return bool */ public function lowerPlayerList($inParam, $outParam) { $request_data = isset($inParam->biz_content) ? $inParam->biz_content : ''; if (!is_array($request_data)) { //参数格式错误 $outParam->SetErrors(ERRORCODE_INPARAMERROR, ERRORINFO_INPARAMERROR); return false; } $agentID = isset($request_data['agentid']) ? $request_data['agentid'] : ''; if (empty($agentID)) { $outParam->SetErrors(ERRORCODE_AGENTIDERROR, ERRORINFO_AGENTIDERROR); return false; } $channelID = isset($request_data['channelid']) ? $request_data['channelid'] : ''; if (empty($channelID)) { $outParam->SetErrors(ERRORCODE_CHANNELIDERROR, ERRORINFO_CHANNELIDERROR); return false; } $salesID = isset($request_data['salesid']) ? $request_data['salesid'] : ''; if (empty($salesID)) { $outParam->SetErrors(ERRORCODE_SALESIDERROR, ERRORINFO_SALESIDERROR); return false; } // $sql = 'select play_playerid as playerid, play_nickname as nickname, play_avatar as avatar from player where play_invitecode=? and play_agentid=? and play_channelid=?'; $sql = 'select player_id as playerid, saus_nickname as nickname, saus_avatar as avatar, saus_salesid as salesid from sales_user where saus_invitecode=? and saus_agentid=? and saus_channelid=?'; $playerList = $this->PDO_Request($sql, $salesID, $agentID, $channelID); if (!is_array($playerList)) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } $outParam->biz_content = array('list' => $playerList); return true; } /** * 获取我的下级代理列表 * 被请求方法示例:参数固定为RequestParameter和ReturnParameter对象,返回值固定为true(成功)和false(失败) * @param RequestParameter $inParam * @param ReturnParameter $outParam * @return bool */ public function mySales($inParam, $outParam) { $request_data = isset($inParam->biz_content) ? $inParam->biz_content : ''; if (!is_array($request_data)) { //参数格式错误 $outParam->SetErrors(ERRORCODE_INPARAMERROR, ERRORINFO_INPARAMERROR); return false; } $agentID = isset($request_data['agentid']) ? $request_data['agentid'] : ''; if (empty($agentID)) { $outParam->SetErrors(ERRORCODE_AGENTIDERROR, ERRORINFO_AGENTIDERROR); return false; } $openID = isset($request_data['openid']) ? $request_data['openid'] : ''; if (empty($openID)) { $outParam->SetErrors(ERRORCODE_OPENIDERROR, ERRORINFO_OPENIDERROR); return false; } $db_data = $this->PDO_Request( 'call cp_sales_get_mysalesman(?,?);', $agentID, $openID ); if (!is_array($db_data)) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } $outParam->biz_content = array('list' => $db_data); return true; } /** * 绑定推荐人 玩家绑定代理 * 被请求方法示例:参数固定为RequestParameter和ReturnParameter对象,返回值固定为true(成功)和false(失败) * @param RequestParameter $inParam * @param ReturnParameter $outParam * @return bool */ public function bindSales($inParam, $outParam) { $param = $inParam->biz_content; $agentid = isset($param['agentid']) ? $param['agentid'] : ''; $channelid = isset($param['channelid']) ? $param['channelid'] : ''; $openid = isset($param['openid']) ? $param['openid'] : ''; $unionid = isset($param['unionid']) ? $param['unionid'] : ''; $salesid = isset($param['salesid']) ? $param['salesid'] : ''; if (empty($agentid)) { $outParam->SetErrors(ERRORCODE_AGENTIDERROR, ERRORINFO_AGENTIDERROR); return false; } if (empty($channelid)) { $outParam->SetErrors(ERRORCODE_CHANNELIDERROR, ERRORINFO_CHANNELIDERROR); return false; } if (empty($openid)) { $outParam->SetErrors(ERRORCODE_OPENIDERROR, ERRORINFO_OPENIDERROR); return false; } if (empty($salesid)) { $outParam->SetErrors(ERRORCODE_SALESIDERROR, ERRORINFO_SALESIDERROR); return false; } $cmd = $this->NewMasterCommand(); $channel_info = $cmd ->select('agent_id', 'channel_id', 'sync_invitecode') ->from('ct_channel_list') ->where(['agent_id' => $agentid, 'channel_id' => $channelid]) ->request(); if (!$this->pdo_isdone()) { $outParam->seterrors($this->geterrorcode(), $this->geterrorinfo()); return false; } elseif (empty($channel_info)) { $outParam->SetErrors(ERRORCODE_AGENTNOTEXISTERROR, ERRORINFO_AGENTNOTEXISTERROR); return false; } else $sync_invitecode = intval($channel_info[0]['sync_invitecode']); $player_info = $cmd ->select('play_playerid', 'play_invitecode') ->from('player') ->where(array( 'play_agentid' => $agentid, 'play_channelid' => $channelid, 'play_unionid' => $unionid, )) ->request(); if (!$this->pdo_isdone()) { $outParam->seterrors($this->geterrorcode(), $this->geterrorinfo()); return false; } elseif (empty($player_info)) { $outParam->biz_content = array( 'state' => 1, 'error' => '未查询到你的玩家信息,如果你是新注册的玩家,请稍等几分钟!', ); return false; } if (!empty($player_info[0]['play_invitecode'])) { $outParam->biz_content = array( 'state' => 2, 'error' => '你已在游戏中绑定过代理!邀请码为:' . $player_info[0]['play_invitecode'], ); return false; } $player_id = $player_info[0]['play_playerid']; /// 查询代理信息 $sales_user = $cmd ->select('saus_salesid', 'saus_nickname', 'saus_avatar', 'saus_wechat', 'saus_tel') ->from('sales_user') ->where([ 'saus_agentid' => $agentid, 'saus_channelid' => $channelid, 'saus_salesid' => $salesid, 'saus_salesman' => 1, ]) ->request(); if (!empty($sales_user)) { $saus_salesid = $sales_user[0]['saus_salesid']; $nickname = $sales_user[0]['saus_nickname']; $avatar = $sales_user[0]['saus_avatar']; $wechat = $sales_user[0]['saus_wechat']; $tel = $sales_user[0]['saus_tel']; } else { $saus_salesid = 0; $nickname = ''; $avatar = ''; $wechat = ''; $tel = ''; } /// 查询不到对应的代理信息 if (empty($saus_salesid)) { $outParam->SetErrors(ERRORCODE_SALESIDERROR, ERRORINFO_SALESIDERROR); return false; } $sales_user = $cmd ->select('saus_invitecode') ->from('sales_user') ->where(array( 'saus_agentid' => $agentid, 'saus_channelid' => $channelid, //'saus_unionid' => $unionid, 'player_id' => $player_id, )) ->request(); if (!empty($sales_user)) $myinvitecode = $sales_user[0]['saus_invitecode']; else $myinvitecode = null; if (empty($myinvitecode)) { $this->pdo_begintransaction(); try { if (0 == $sync_invitecode) /// 不同步邀请码 { /// 修改代理表的代理号 $ret = $cmd ->update('sales_user') ->fields('saus_invitecode') ->values($salesid) ->where([ 'saus_agentid' => $agentid, 'saus_channelid' => $channelid, //'saus_unionid' => $unionid, 'player_id' => $player_id, ]) ->execute(); } else /// 同步邀请码 { /// 修改代理表的代理号 $ret = $cmd ->update('sales_user') ->fields('saus_invitecode', 'saus_parentid') ->values($salesid, $salesid) ->where([ 'saus_agentid' => $agentid, 'saus_channelid' => $channelid, //'saus_unionid' => $unionid, 'player_id' => $player_id, ]) ->execute(); } if (!$ret) throw new Exception($this->GetErrorInfo(), $this->GetErrorCode()); /// 修改玩家表的代理号 $ret = $cmd ->update('player') ->fields('play_invitecode') ->values($salesid) ->where([ 'play_agentid' => $agentid, 'play_channelid' => $channelid, //'play_unionid' => $unionid, 'play_playerid' => $player_id, ]) ->execute(); if (!$ret) throw new Exception($this->GetErrorInfo(), $this->GetErrorCode()); $outParam->biz_content = [ 'salesid' => $saus_salesid, 'nickname' => $nickname, 'avatar' => $avatar, 'wechat' => $wechat, 'tel' => $tel, ]; /// 记录绑定日志 $ret = $cmd ->insert('ct_user_process_log') ->fields('from_agent', 'from_channel', 'from_user', 'to_agent', 'to_channel', 'to_user', 'oper_type', 'oper_data', 'remark', 'oper_time', 'is_process') ->values($agentid, $channelid, $salesid, $agentid, $channelid, $openid, 101, $unionid, '来源用户为要绑定的代理,目标用户为要绑定的玩家。其中目标用户的userid为用户的openid,oper_data为用户unionid。', time(), 0) ->execute(); if (!$ret) throw new Exception($this->GetErrorInfo(), $this->GetErrorCode()); $this->pdo_commit(); return true; } catch (Exception $e) { $this->pdo_rollback(); $outParam->seterrors($e->getcode(), $e->getmessage()); return false; } } else { $sales_user = $cmd ->select('saus_salesid', 'saus_nickname', 'saus_avatar', 'saus_wechat', 'saus_tel') ->from('sales_user') ->where([ 'saus_agentid' => $agentid, 'saus_salesid' => $myinvitecode, 'saus_salesman' => 1, ]) ->request(); if (!empty($sales_user)) { $saus_salesid = $sales_user[0]['saus_salesid']; $nickname = $sales_user[0]['saus_nickname']; $avatar = $sales_user[0]['saus_avatar']; $wechat = $sales_user[0]['saus_wechat']; $tel = $sales_user[0]['saus_tel']; } else { $saus_salesid = 0; $nickname = ''; $avatar = ''; $wechat = ''; $tel = ''; } $outParam->biz_content = array( 'salesid' => $saus_salesid, 'nickname' => $nickname, 'avatar' => $avatar, 'wechat' => $wechat, 'tel' => $tel, ); $outParam->SetErrors(ERRORCODE_INVITECODEEXISTS, '你已绑定代理(有疑问请联系代理)'); return false; } } /** * 申请为个人代理 * 被请求方法示例:参数固定为RequestParameter和ReturnParameter对象,返回值固定为true(成功)和false(失败) * @param RequestParameter $inParam * @param ReturnParameter $outParam * @return bool * @throws Exception */ public function applySales($inParam, $outParam) { $request_data = isset($inParam->biz_content) ? $inParam->biz_content : ''; if (!is_array($request_data)) { //参数格式错误 $outParam->SetErrors(ERRORCODE_INPARAMERROR, ERRORINFO_INPARAMERROR); return false; } $agent_id = @$request_data['agentid']; /// 代理 $channel_id = @$request_data['channelid']; /// 渠道 $sales_id = @$request_data['salesid']; /// 代理号 $open_id = @$request_data['openid']; /// openid $union_id = @$request_data['unionid']; /// unionid $wechat = @$request_data['wechat']; /// 微信号 $tel = isset($request_data['tel']) ? $request_data['tel'] : ''; /// 电话 $inivtecode = isset($request_data['inivtecode']) ? $request_data['inivtecode'] : ''; /// 邀请码 //$type = isset($request_data['type']) ? $request_data['type'] : ''; /// 成为代理的类型,微信还是手机 if (empty($agent_id)) { $outParam->SetErrors(ERRORCODE_AGENTIDERROR, ERRORINFO_AGENTIDERROR); return false; } if (empty($channel_id)) { $outParam->SetErrors(ERRORCODE_CHANNELIDERROR, ERRORINFO_CHANNELIDERROR); return false; } $password = isset($request_data['password']) ? $request_data['password'] : ''; $password2 = isset($request_data['password2']) ? $request_data['password2'] : ''; if ( !$password) throw new Exception('请输入密码', 200); if ( !$password2) throw new Exception('请再次输入密码', 200); if ($password !== $password2) throw new Exception('两次输入的密码不相同', 200); /** @var ISQLCommand $cmd */ $cmd = $this->NewMasterCommand(); /// 业务开始 $this->PDO_BeginTransaction(); try { /// 检验agentid /*$agent = $cmd->request( 'select 1 from agent where agen_agentid = ?', $agent_id);*/ $agent = $cmd->request(/** @lang text */'select 1 from ct_agent_list where agent_id = ?', $agent_id); if (empty($agent)) throw new Exception(ERRORINFO_AGENTIDERROR, ERRORCODE_AGENTIDERROR); /// 检验代理号 if (!empty($sales_id)) { /// 检验微信公众号用户 $sales_user = $cmd->request(/** @lang text */ 'select saus_salesman from sales_user where saus_agentid = ? and saus_channelid = ? and saus_salesid = ?', $agent_id, $channel_id, $sales_id); if (empty($sales_user)) throw new Exception(ERRORINFO_OPENIDERROR, ERRORCODE_OPENIDERROR); elseif (1 == $sales_user[0]['saus_salesman']) throw new Exception(ERRORINFO_INVITECODEEXISTS, ERRORCODE_INVITECODEEXISTS); /// 取上级代理号 $parentid = null; if (!empty($inivtecode)) { $sales_user = $cmd->request(/** @lang text */ 'select saus_salesid from sales_user where saus_agentid = ? and saus_channelid = ? and saus_salesid = ?', $agent_id, $channel_id, $inivtecode); if (empty($sales_user)) throw new Exception(ERRORINFO_OPENIDERROR, ERRORCODE_OPENIDERROR); $parentid = $sales_user[0]['saus_salesid']; } /// 更新代理信息 $sql = /** @lang text */<<execute($sql, $wechat, $tel, $parentid, $password, $agent_id, $sales_id); if (!$ret) throw new Exception($this->GetErrorInfo(), $this->GetErrorCode()); } elseif (!empty($union_id) || !empty($open_id)) /// 为了兼顾老数据,这里处理没有代理号的用户成为代理的情况。 { /// 检验微信公众号用户 if ( !empty($union_id)) { $sales_user = $cmd->request(/** @lang text */ 'select saus_salesman from sales_user where saus_agentid = ? and saus_channelid = ? and saus_unionid = ?', $agent_id, $channel_id, $union_id); } else { $sales_user = $cmd->request(/** @lang text */ 'select saus_salesman from sales_user where saus_agentid = ? and saus_channelid = ? and saus_openid = ?', $agent_id, $channel_id, $open_id); } //if (empty($sales_user)) //throw new Exception(ERRORINFO_OPENIDERROR, ERRORCODE_OPENIDERROR); if (!empty($sales_user) && 1 == $sales_user[0]['saus_salesman']) throw new Exception(ERRORINFO_INVITECODEEXISTS, ERRORCODE_INVITECODEEXISTS); /// 如果没有代理编号,则需要生成一个代理号 /// 新个人代理 /*$ret = $cmd->execute( 'update agent set agen_maxsalesid = agen_maxsalesid + floor(rand() * (12-6) + 6) where agen_agentid = ?', $agent_id);*/ $ret = $cmd->execute(/** @lang text */ 'update ct_agent_list set max_sales_id = max_sales_id + floor(rand() * (12-6) + 6) where agent_id = ?', $agent_id); if (!$ret) throw new Exception($this->GetErrorInfo(), $this->GetErrorCode()); /*$agent = $cmd->request( 'select agen_maxsalesid, agen_salespower from agent where agen_agentid = ?', $agent_id);*/ $agent = $cmd->request(/** @lang text */' select max_sales_id as agen_maxsalesid, default_sales_power as agen_salespower from ct_agent_list where agent_id = ?', $agent_id); if (empty($agent)) throw new Exception(ERRORINFO_AGENTIDERROR, ERRORCODE_AGENTIDERROR); $sales_id = $agent[0]['agen_maxsalesid']; $sales_power = $agent[0]['agen_salespower']; /// 取上级代理号 $parentid = null; if (!empty($inivtecode)) { $sales_user = $cmd->request(/** @lang text */ 'select saus_salesid from sales_user where saus_agentid = ? and saus_channelid = ? and saus_salesid = ?', $agent_id, $channel_id, $inivtecode); if (empty($sales_user)) throw new Exception(ERRORINFO_OPENIDERROR, ERRORCODE_OPENIDERROR); $parentid = $sales_user[0]['saus_salesid']; } /// 更新代理信息 if (!empty($union_id)) { $sql = /** @lang text */<<execute($sql, $wechat, $tel, $parentid, $sales_id, $sales_power, $password, $agent_id, $channel_id, $union_id); } else { $sql = /** @lang text */<<execute($sql, $wechat, $tel, $parentid, $sales_id, $sales_power, $password, $agent_id, $channel_id, $open_id); } if (!$ret) throw new Exception($this->GetErrorInfo(), $this->GetErrorCode()); } else throw new Exception(ERRORINFO_SALESIDERROR, ERRORCODE_SALESIDERROR); /// 按日期统计新增个人代理人数 $ret = $cmd->CallStoredProcedure('cp_report_agent_day')->Values($agent_id, 1, 1); if (!$ret) throw new Exception($this->GetErrorInfo(), $this->GetErrorCode()); $sql = /** @lang text */<<request($sql, $agent_id, $channel_id, $sales_id); if (is_array($sales_user) && count($sales_user) > 0) { $sales_user[0]['nickname'] = usefull::getInstance()->check_name($sales_user[0]['nickname']); /// 记录注册日志 $ret = $cmd->execute(/** @lang text */ 'insert into ct_user_process_log( to_agent, to_channel, to_user, oper_type, oper_data, remark, oper_time, is_process) values(?, ?, ?, 21, ?, ?, ?, 0)', $agent_id, $channel_id, $sales_user[0]['salesid'], JsonObjectToJsonString($sales_user[0]), '目标用户为注册的代理信息。oper_data为用户unionid。', time()); if (!$ret) throw new Exception($this->GetErrorInfo(), $this->GetErrorCode()); } if (!empty($sales_user[0]['tel'])) { /// 处理已送的记录 $sql = /** @lang text */<<pdo_execute($sql, $agent_id, $channel_id, $sales_user[0]['tel']); if (!$ret) throw new Exception($this->GetErrorInfo(), $this->GetErrorCode()); /// 加入流水信息 $sql = /** @lang text */<<pdo_execute($sql, $agent_id, $channel_id, $sales_user[0]['tel']); if (!$ret) throw new Exception($this->GetErrorInfo(), $this->GetErrorCode()); /// 处理未送的记录 $sql = /** @lang text */<<pdo_execute($sql, $agent_id, $channel_id, $sales_user[0]['tel']); if (!$ret) throw new Exception($this->GetErrorInfo(), $this->GetErrorCode()); } $this->PDO_Commit(); } catch (Exception $Exception) { $this->PDO_Rollback(); $outParam->SetErrors($Exception->getCode(), $Exception->getMessage()); return false; } $outParam->biz_content = array('inivtecode' => $parentid); return true; } /** * 让游戏生成代理信息,以解决玩家在游戏中绑定不了代理的问题 */ public function gameRegisterSales($inParam, $outParam) { $request_data = isset($inParam->biz_content) ? $inParam->biz_content : ''; if (!is_array($request_data)) { $outParam->SetErrors(ERRORCODE_INPARAMERROR, ERRORINFO_INPARAMERROR); return false; } $agent_id = @$request_data['agentid']; /// 代理 $channel_id = @$request_data['channelid']; /// 渠道 $sales_id = @$request_data['salesid']; /// 代理号 if (empty($agent_id)) { $outParam->SetErrors(ERRORCODE_AGENTIDERROR, ERRORINFO_AGENTIDERROR); return false; } if (empty($channel_id)) { $outParam->SetErrors(ERRORCODE_CHANNELIDERROR, ERRORINFO_CHANNELIDERROR); return false; } $cmd = $this->NewMasterCommand(); $sql = /** @lang text */<<request($sql, $agent_id, $channel_id, $sales_id); if (is_array($sales_user) && count($sales_user) > 0) { /// 记录注册日志 $ret = $cmd->execute(/** @lang text */ 'insert into ct_user_process_log( to_agent, to_channel, to_user, oper_type, oper_data, remark, oper_time, is_process) values(?, ?, ?, 21, ?, ?, ?, 0)', $agent_id, $channel_id, $sales_id, JsonObjectToJsonString($sales_user[0]), '目标用户为注册的代理信息。oper_data为用户unionid。', time()); if (!$ret) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } $outParam->biz_content = array('msg' => 'ok'); return true; } else { $outParam->SetErrors(ERRORCODE_OPENIDERROR, '该代理不存在'); return false; } } /** * 修改个人代理的联系方式 * 被请求方法示例:参数固定为RequestParameter和ReturnParameter对象,返回值固定为true(成功)和false(失败) * @param RequestParameter $inParam * @param ReturnParameter $outParam * @return bool */ public function updateInfo($inParam, $outParam) { $request_data = isset($inParam->biz_content) ? $inParam->biz_content : ''; if (!is_array($request_data)) { //参数格式错误 $outParam->SetErrors(ERRORCODE_INPARAMERROR, ERRORINFO_INPARAMERROR); return false; } $agentID = isset($request_data['agentid']) ? $request_data['agentid'] : ''; if (empty($agentID)) { $outParam->SetErrors(ERRORCODE_AGENTIDERROR, ERRORINFO_AGENTIDERROR); return false; } $openID = isset($request_data['openid']) ? $request_data['openid'] : ''; if (empty($openID)) { $outParam->SetErrors(ERRORCODE_OPENIDERROR, ERRORINFO_OPENIDERROR); return false; } $unionID = isset($request_data['unionid']) ? $request_data['unionid'] : ''; if (empty($unionID)) { $outParam->SetErrors(ERRORCODE_CHANNELIDERROR, ERRORINFO_CHANNELIDERROR); return false; } $wechat = isset($request_data['wechat']) ? $request_data['wechat'] : ''; if (empty($wechat)) { $outParam->SetErrors(ERRORCODE_WECHATERROR, ERRORINFO_WECHATERROR); return false; } $tel = isset($request_data['tel']) ? $request_data['tel'] : ''; $dbSaleInfo = $this->PDO_Request(/** @lang text */ ' SELECT idx FROM sales_user WHERE saus_agentid = ? and saus_unionid = ?;', $agentID, $unionID); if (!is_array($dbSaleInfo)) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } if (count($dbSaleInfo) < 1) { $outParam->SetErrors(ERRORCODE_SALESNOTEXISTERROR, ERRORINFO_SALESNOTEXISTERROR); return false; } $strSql = ''; $arrayParam = array($wechat); if (!empty($tel)) { $strSql .= ' ,saus_tel=? '; $arrayParam[] = $tel; } $arrayParam[] = $agentID; $arrayParam[] = $unionID; $this->PDO_Execute(/** @lang text */ " UPDATE sales_user SET saus_wechat = ? {$strSql} WHERE saus_agentid = ? and saus_unionid = ?;", $arrayParam); if (!$this->PDO_IsDone()) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } $outParam->biz_content = array( 'state' => 0, 'error' => '', ); return true; } /** * 客服联系方式 * 被请求方法示例:参数固定为RequestParameter和ReturnParameter对象,返回值固定为true(成功)和false(失败) * @param RequestParameter $inParam * @param ReturnParameter $outParam * @return bool */ public function contactWay($inParam, $outParam) { $request_data = isset($inParam->biz_content) ? $inParam->biz_content : ''; if (!is_array($request_data)) { //参数格式错误 $outParam->SetErrors(ERRORCODE_INPARAMERROR, ERRORINFO_INPARAMERROR); return false; } $agentID = isset($request_data['agentid']) ? $request_data['agentid'] : ''; if (empty($agentID)) { $outParam->SetErrors(ERRORCODE_AGENTIDERROR, ERRORINFO_AGENTIDERROR); return false; } /**$db_data = $this->PDO_Request( ' SELECT sale_qq, sale_wechat, sale_tel FROM config_agent WHERE agent_id=?', $agentID);*/ $db_data = $this->PDO_Request(/** @lang text */'select qq as sale_qq, wechat as sale_wechat from ct_channel_list where agent_id=?', $agentID); if (!is_array($db_data)) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } if (count($db_data) < 1) { $outParam->biz_content = array(); return true; } $outParam->biz_content = array( 'qq' => $db_data[0]['sale_qq'], 'wechat' => $db_data[0]['sale_wechat'], 'tel' => '', ); return true; } /** * 代理城市列表 * 被请求方法示例:参数固定为RequestParameter和ReturnParameter对象,返回值固定为true(成功)和false(失败) * @param RequestParameter $inParam * @param ReturnParameter $outParam * @return bool */ public function cityList($inParam, $outParam) { $request_data = isset($inParam->biz_content) ? $inParam->biz_content : ''; if (!is_array($request_data)) { //参数格式错误 $outParam->SetErrors(ERRORCODE_INPARAMERROR, ERRORINFO_INPARAMERROR); return false; } $agentID = isset($request_data['agentid']) ? $request_data['agentid'] : ''; if (empty($agentID)) { $outParam->SetErrors(ERRORCODE_AGENTIDERROR, ERRORINFO_AGENTIDERROR); return false; } // $channelID = isset($request_data['channelid']) ? $request_data['channelid'] : ''; // if(empty($channelID)) // { // $outParam->SetErrors(ERRORCODE_CHANNELIDERROR, ERRORINFO_CHANNELIDERROR); // return false; // } $db_data = $this->PDO_Request(/** @lang text */ " SELECT agent_id as agentid, agent_name as name, channel_id as channelid FROM config_agent WHERE agent_id=? OR rel_agent_id=? ", $agentID, $agentID); if (!is_array($db_data)) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } $outParam->biz_content = array('list' => $db_data); return true; } /** * 封号或者解封 * 被请求方法示例:参数固定为RequestParameter和ReturnParameter对象,返回值固定为true(成功)和false(失败) * @param RequestParameter $inParam * @param ReturnParameter $outParam * @return bool */ public function closeSale($inParam, $outParam) { $request_data = isset($inParam->biz_content) ? $inParam->biz_content : ''; if (!is_array($request_data)) { //参数格式错误 $outParam->SetErrors(ERRORCODE_INPARAMERROR, ERRORINFO_INPARAMERROR); return false; } $agentID = isset($request_data['agentid']) ? $request_data['agentid'] : ''; if (empty($agentID)) { $outParam->SetErrors(ERRORCODE_AGENTIDERROR, ERRORINFO_AGENTIDERROR); return false; } $channelID = isset($request_data['channelid']) ? $request_data['channelid'] : ''; if (empty($channelID)) { $outParam->SetErrors(ERRORCODE_CHANNELIDERROR, ERRORINFO_CHANNELIDERROR); return false; } $salesID = isset($request_data['salesid']) ? $request_data['salesid'] : ''; if (empty($salesID)) { $outParam->SetErrors(ERRORCODE_SALESIDERROR, ERRORINFO_SALESIDERROR); return false; } //1、封玩家, 2、解封 $type = isset($request_data['type']) ? intval($request_data['type']) : 0; if ($type != 1 && $type != 2) { return false; } $dbSaleInfo = $this->PDO_Request(/** @lang text */ ' SELECT idx, saus_salesman, saus_status FROM sales_user WHERE saus_agentid = ? AND saus_channelid=? AND saus_salesid=?', $agentID, $channelID, $salesID); if (!is_array($dbSaleInfo) || count($dbSaleInfo) < 1) { $outParam->SetErrors(ERRORCODE_SALESIDERROR, ERRORINFO_SALESIDERROR); return false; } if (intval($dbSaleInfo[0]['saus_salesman']) != 1) { $outParam->SetErrors(ERRORCODE_SALESNOTEXISTERROR, ERRORINFO_SALESNOTEXISTERROR); return false; } $status = 0; $operate_type = 32; if ($type == 1) { $operate_type = 31; $status = 1; } if ($operate_type == 31 && $dbSaleInfo[0]['saus_status'] == 1) { return true; } if ($operate_type == 32 && $dbSaleInfo[0]['saus_status'] == 0) { return true; } $ret = $this->PDO_Execute(/** @lang text */ 'UPDATE sales_user SET saus_status = ? WHERE idx=?', $status, $dbSaleInfo[0]['idx']); if (!$ret) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } $log_res = $this->PDO_Execute(/** @lang text */ ' INSERT INTO ct_user_process_log(from_agent, from_channel, from_user, to_agent, to_channel, to_user, oper_type, oper_data, remark, oper_time, is_process) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', '', '', '', $agentID, $channelID, $salesID, $operate_type, '', '', time(), 0); if (!$log_res) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } return true; } /** * 解绑绑定我的玩家或代理 * 被请求方法示例:参数固定为RequestParameter和ReturnParameter对象,返回值固定为true(成功)和false(失败) * @param RequestParameter $inParam * @param ReturnParameter $outParam * @return bool */ public function unbind($inParam, $outParam) { $request_data = isset($inParam->biz_content) ? $inParam->biz_content : ''; if (!is_array($request_data)) { //参数格式错误 $outParam->SetErrors(ERRORCODE_INPARAMERROR, ERRORINFO_INPARAMERROR); return false; } $agentID = isset($request_data['agentid']) ? $request_data['agentid'] : ''; if (empty($agentID)) { $outParam->SetErrors(ERRORCODE_AGENTIDERROR, ERRORINFO_AGENTIDERROR); return false; } $channelID = isset($request_data['channelid']) ? $request_data['channelid'] : ''; if (empty($channelID)) { $outParam->SetErrors(ERRORCODE_CHANNELIDERROR, ERRORINFO_CHANNELIDERROR); return false; } $salesID = isset($request_data['salesid']) ? $request_data['salesid'] : ''; if (empty($salesID)) { $outParam->SetErrors(ERRORCODE_SALESIDERROR, ERRORINFO_SALESIDERROR); return false; } //判断自己是否是代理身份 $dbData = $this->PDO_Request(/** @lang text */ ' SELECT idx, saus_salesman FROM sales_user WHERE saus_agentid=? AND saus_channelid=? AND saus_salesid=?', $agentID, $channelID, $salesID); if (!is_array($dbData)) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } if (count($dbData) < 1 || intval($dbData[0]['saus_salesman']) != 1) { $outParam->SetErrors(ERRORCODE_SALESNOTEXISTERROR, ERRORINFO_SALESNOTEXISTERROR); return false; } //解除绑定了我的代理 $dbSaleInfo = $this->PDO_Request(/** @lang text */ ' SELECT idx, saus_salesid FROM sales_user WHERE saus_salesman=1 AND saus_agentid=? AND saus_channelid=? AND saus_parentid=?', $agentID, $channelID, $salesID); if (!is_array($dbSaleInfo)) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } $this->PDO_BeginTransaction(); $this->PDO_Execute(/** @lang text */ ' UPDATE sales_user SET saus_parentid=null WHERE saus_salesman=1 AND saus_agentid=? AND saus_channelid=? AND saus_parentid=?', $agentID, $channelID, $salesID); if (!$this->PDO_IsDone()) { $this->PDO_Rollback(); $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } $arrayUnbind = array( 'player' => array(), 'sales' => array( 'par' => array(), 'inv' => array(), ), ); foreach ($dbSaleInfo as $item) { if (empty($item['saus_salesid'])) { continue; } $arrayUnbind['sales']['par'][] = $item['saus_salesid']; } //解除绑定了我的玩家 $dbPlayerInfo = $this->PDO_Request(/** @lang text */ ' SELECT idx, play_playerid FROM player WHERE play_agentid = ? AND play_channelid=? AND play_invitecode=?', $agentID, $channelID, $salesID); $this->PDO_Execute(/** @lang text */ ' UPDATE player SET play_invitecode=null WHERE play_agentid = ? AND play_channelid=? AND play_invitecode=?', $agentID, $channelID, $salesID); if (!$this->PDO_IsDone()) { $this->PDO_Rollback(); $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } foreach ($dbPlayerInfo as $item) { if (empty($item['play_playerid'])) { continue; } $arrayUnbind['player'][] = $item['play_playerid']; } $dbSaleInfoTwo = $this->PDO_Request(/** @lang text */ ' SELECT idx, saus_salesid FROM sales_user WHERE saus_agentid=? AND saus_channelid=? AND saus_invitecode=?', $agentID, $channelID, $salesID); if (!is_array($dbSaleInfoTwo)) { $this->PDO_Rollback(); $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } foreach ($dbSaleInfoTwo as $item) { if (empty($item['saus_salesid'])) { continue; } $arrayUnbind['sales']['inv'][] = $item['saus_salesid']; } $this->PDO_Execute(/** @lang text */ ' UPDATE sales_user SET saus_invitecode=null WHERE saus_agentid=? AND saus_channelid=? AND saus_invitecode=?', $agentID, $channelID, $salesID); if (!$this->PDO_IsDone()) { $this->PDO_Rollback(); $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } if (count($arrayUnbind['player']) > 0 || count($arrayUnbind['sales']['inv']) > 0 || count($arrayUnbind['sales']['par']) > 0) { //记录日志 $log_res = $this->PDO_Execute(/** @lang text */ ' INSERT INTO ct_user_process_log(from_agent, from_channel, from_user, to_agent, to_channel, to_user, oper_type, oper_data, remark, oper_time, is_process) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', $agentID, $channelID, $salesID, $agentID, $channelID, '', 41, json_encode($arrayUnbind), '', time(), 0); if (!$log_res) { $this->PDO_Rollback(); $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } //记录本地日志 $log_res = $this->PDO_Execute(/** @lang text */ ' INSERT INTO sales_operate_log(agent_id, channel_id, sales_id, operate_type, operate_data, create_time) VALUES (?, ?, ?, ?, ?, ?)', $agentID, $channelID, $salesID, 0, json_encode($arrayUnbind), date('Y-m-d H:i:s', time())); if (!$log_res) { $this->PDO_Rollback(); $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } } $this->PDO_Commit(); return true; } /** * 封禁或解封玩家 * 被请求方法示例:参数固定为RequestParameter和ReturnParameter对象,返回值固定为true(成功)和false(失败) * @param RequestParameter $inParam * @param ReturnParameter $outParam * @return bool */ public function closePlayer($inParam, $outParam) { $request_data = isset($inParam->biz_content) ? $inParam->biz_content : ''; if (!is_array($request_data)) { //参数格式错误 $outParam->SetErrors(ERRORCODE_INPARAMERROR, ERRORINFO_INPARAMERROR); return false; } $agentID = isset($request_data['agentid']) ? $request_data['agentid'] : ''; if (empty($agentID)) { $outParam->SetErrors(ERRORCODE_AGENTIDERROR, ERRORINFO_AGENTIDERROR); return false; } $channelID = isset($request_data['channelid']) ? $request_data['channelid'] : ''; if (empty($channelID)) { $outParam->SetErrors(ERRORCODE_CHANNELIDERROR, ERRORINFO_CHANNELIDERROR); return false; } $playerID = isset($request_data['playerid']) ? $request_data['playerid'] : ''; if (empty($playerID)) { $outParam->SetErrors(ERRORCODE_PLAYERIDERROR, ERRORINFO_PLAYERIDERROR); return false; } //1、封玩家, 2、解封 $type = isset($request_data['type']) ? intval($request_data['type']) : 0; if ($type != 1 && $type != 2) { return false; } $dbPlayerInfo = $this->PDO_Request(/** @lang text */ ' SELECT play_status FROM player WHERE play_agentid=? AND play_channelid=? AND play_playerid=?', $agentID, $channelID, $playerID); if (!is_array($dbPlayerInfo)) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } if (count($dbPlayerInfo) < 1) { $outParam->SetErrors(ERRORCODE_PLAYERNOTEXISTERROR, ERRORINFO_PLAYERNOTEXISTERROR); return false; } $status = 0; $operate_type = 34; if ($type == 1) { $status = 1; $operate_type = 33; } if ($operate_type == 33 && $dbPlayerInfo[0]['play_status'] == 1) { return true; } if ($operate_type == 34 && $dbPlayerInfo[0]['play_status'] == 0) { return true; } $log_res = $this->PDO_Execute(/** @lang text */ ' INSERT INTO ct_user_process_log(from_agent, from_channel, from_user, to_agent, to_channel, to_user, oper_type, oper_data, remark, oper_time, is_process) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', '', '', '', $agentID, $channelID, $playerID, $operate_type, '', '', time(), 0); if (!$log_res) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } $ret = $this->PDO_Execute(/** @lang text */ ' UPDATE player SET play_status=?, status_change_time=? WHERE play_agentid=? AND play_channelid=? AND play_playerid=?', $status, date('Y-m-d H:i:s', time()), $agentID, $channelID, $playerID); if (!$ret) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } return true; } /** * 新查询代理信息 * 被请求方法示例:参数固定为RequestParameter和ReturnParameter对象,返回值固定为true(成功)和false(失败) * @param RequestParameter $inParam * @param ReturnParameter $outParam * @return bool */ public function findAgent($inParam, $outParam) { $request_data = isset($inParam->biz_content) ? $inParam->biz_content : ''; if (!is_array($request_data)) { //参数格式错误 $outParam->SetErrors(ERRORCODE_INPARAMERROR, ERRORINFO_INPARAMERROR); return false; } $agentID = isset($request_data['agentid']) ? $request_data['agentid'] : ''; if (empty($agentID)) { $outParam->SetErrors(ERRORCODE_AGENTIDERROR, ERRORINFO_AGENTIDERROR); return false; } $channelID = isset($request_data['channelid']) ? $request_data['channelid'] : ''; if (empty($channelID)) { $outParam->SetErrors(ERRORCODE_CHANNELIDERROR, ERRORINFO_CHANNELIDERROR); return false; } $salesID = isset($request_data['salesid']) ? $request_data['salesid'] : ''; if (empty($salesID)) { $outParam->SetErrors(ERRORCODE_SALESIDERROR, ERRORINFO_SALESIDERROR); return false; } // 操作人id $operateID = isset($request_data['operateid']) ? $request_data['operateid'] : ''; // 兼容,如果有操作人的id,就判断他是否有权限 if(!empty($operateID)) { $command = /** @lang text */ <<PDO_Request($command, $agentID, $channelID, $operateID); if ( !is_array($dbSalesInfo) || count($dbSalesInfo) < 1) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } $salePower = $dbSalesInfo[0]['salespower']; if (empty($salePower)) { $dbAgentInfo = $this->PDO_Request(/** @lang text */'select default_sales_power as agen_salespower from ct_agent_list where agent_id = ?;', $agentID); if (!is_array($dbAgentInfo) || count($dbAgentInfo) < 1) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } $salePower = $dbAgentInfo[0]['agen_salespower']; } switch (intval(substr($salePower, 0, 1))) { case 0: /// 无权限 $outParam->SetErrors(ERRORCODE_NOPOWERERROR, ERRORINFO_NOPOWERERROR); return false; break; case 1: /// 需要判断是否绑定自己 $to_sales = $this->pdo_request(/** @lang text */ 'select saus_parentid from sales_user where saus_agentid = ? and saus_channelid = ? and saus_salesid = ?', $agentID, $channelID, $salesID); if (!$this->pdo_isdone()) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } if (empty($to_sales)) { $outParam->SetErrors(ERRORCODE_INVITECODE_NOT_EXISTS, ERRORINFO_INVITECODE_NOT_EXISTS); return false; } if ($to_sales[0]['saus_parentid'] != $operateID) { $outParam->SetErrors(ERRORCODE_ONLYBINDSELFERROR, ERRORINFO_ONLYBINDSELFERROR); return false; } break; case 2: /// 可以给所有代理转卡 break; default: $outParam->SetErrors(ERRORINFO_NOPOWERERROR, ERRORCODE_NOPOWERERROR); return false; break; } } $dbSaleInfo = $this->PDO_Request(/** @lang text */ ' SELECT saus_nickname, saus_salesid, saus_roomcard, saus_bean, saus_status, saus_parentid FROM sales_user WHERE saus_salesman=1 AND saus_agentid=? AND saus_channelid=? AND saus_salesid=?', $agentID, $channelID, $salesID); if (!is_array($dbSaleInfo)) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } if (count($dbSaleInfo) < 1) { $outParam->SetErrors(ERRORCODE_SALESNOTEXISTERROR, ERRORINFO_SALESNOTEXISTERROR); return false; } $outParam->biz_content = array( 'state' => 0, 'salesid' => $dbSaleInfo[0]['saus_salesid'], 'salesname' => $dbSaleInfo[0]['saus_nickname'], 'roomcard' => $dbSaleInfo[0]['saus_roomcard'], 'been' => $dbSaleInfo[0]['saus_bean'], 'salesstatus' => $dbSaleInfo[0]['saus_status'], 'parentid' => $dbSaleInfo[0]['saus_parentid'], ); return true; } /** * 总代理扣除 玩家 的房卡或星星 * 被请求方法示例:参数固定为RequestParameter和ReturnParameter对象,返回值固定为true(成功)和false(失败) * @param RequestParameter $inParam * @param ReturnParameter $outParam * @return bool */ public function deductPlayer($inParam, $outParam) { //参数格式错误 //$outParam->SetErrors(400, '该功能已关闭'); //return false; $request_data = isset($inParam->biz_content) ? $inParam->biz_content : ''; if (!is_array($request_data)) { //参数格式错误 $outParam->SetErrors(ERRORCODE_INPARAMERROR, ERRORINFO_INPARAMERROR); return false; } $agentID = isset($request_data['agentid']) ? $request_data['agentid'] : ''; if (empty($agentID)) { $outParam->SetErrors(ERRORCODE_AGENTIDERROR, ERRORINFO_AGENTIDERROR); return false; } $channelID = isset($request_data['channelid']) ? $request_data['channelid'] : ''; if (empty($channelID)) { $outParam->SetErrors(ERRORCODE_CHANNELIDERROR, ERRORINFO_CHANNELIDERROR); return false; } //操作人id $salesID = isset($request_data['salesid']) ? $request_data['salesid'] : ''; if (empty($salesID)) { $outParam->SetErrors(ERRORCODE_SALESIDERROR, ERRORINFO_SALESIDERROR); return false; } //被扣id $deductID = isset($request_data['deductid']) ? $request_data['deductid'] : ''; if (empty($deductID)) { $outParam->SetErrors(ERRORCODE_SALESIDERROR, ERRORINFO_SALESIDERROR); return false; } //扣除数量 $amount = isset($request_data['amount']) ? intval($request_data['amount']) : 0; if ($amount <= 0) { $outParam->SetErrors(ERRORCODE_AMOUNTERROR, ERRORINFO_AMOUNTERROR); return false; } //操作类型 0、扣除房卡,1、扣除星星 $type = isset($request_data['type']) ? intval($request_data['type']) : 0; //只有总代理才有权限 $dbSalesInfo = $this->PDO_Request(/** @lang text */ 'select idx, user_id, global_power from sales_user where saus_agentid=? and saus_channelid=? and saus_salesid=?', $agentID, $channelID, $salesID); if (!is_array($dbSalesInfo)) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } if (count($dbSalesInfo) < 1) { $outParam->SetErrors(ERRORCODE_SALESNOTEXISTERROR, ERRORINFO_SALESNOTEXISTERROR); return false; } //不是总代理,没有权限 if (intval($dbSalesInfo[0]['global_power']) != 1) { $outParam->SetErrors(ERRORCODE_NOPOWERERROR, ERRORINFO_NOPOWERERROR); return false; } if ($type == 0) { //扣玩家房卡,判断玩家是否存在 $dbPlayerInfo = $this->PDO_Request(/** @lang text */ 'select idx, play_roomcard from player where play_agentid=? and play_channelid=? and play_playerid=?', $agentID, $channelID, $deductID); if (!is_array($dbPlayerInfo)) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } if (count($dbPlayerInfo) < 1) { $outParam->SetErrors(ERRORCODE_PLAYERNOTEXISTERROR, ERRORINFO_PLAYERNOTEXISTERROR); return false; } //判断玩家房卡数是否够 //获取游戏中,玩家房卡数量 /*$gamePlayerInfo = $this->getGamePlayerInfo($agentID, $deductID, REQUEST_USER_INFO); if (!is_array($gamePlayerInfo)) { $outParam->SetErrors(ERRORCODE_PLAYERNOTEXISTERROR, ERRORINFO_PLAYERNOTEXISTERROR); return false; } if (!isset($gamePlayerInfo['data']['roomcard'])) { $outParam->SetErrors(ERRORCODE_PLAYERNOTEXISTERROR, ERRORINFO_PLAYERNOTEXISTERROR); return false; } $gamePlayerCard = intval($gamePlayerInfo['data']['roomcard']); //判断房卡数是否够 if ($gamePlayerCard < $amount) { $outParam->SetErrors(ERRORCODE_ROOMCARDENOUGHERROR, ERRORINFO_ROOMCARDENOUGHERROR); return false; } $leftCard = $gamePlayerCard - $amount; if ($leftCard < 0) $leftCard = 0;*/ if ($dbPlayerInfo[0]['play_roomcard'] < $amount) { $outParam->SetErrors(ERRORCODE_ROOMCARDENOUGHERROR, ERRORINFO_ROOMCARDENOUGHERROR); return false; } //事务开始 //扣除玩家房卡 $this->PDO_BeginTransaction(); try { //扣除玩家房卡 $ret = $this->PDO_Execute(/** @lang */ ' UPDATE player SET play_roomcard=play_roomcard - ? WHERE idx=?;', $amount, $dbPlayerInfo[0]['idx']); if (!$ret || !$this->PDO_IsDone()) throw new Exception($this->GetErrorInfo(), $this->GetErrorCode()); //把房卡加入到总代理里面 // $ret = $this->PDO_Execute(/** @lang */ // 'update sales_user set saus_roomcard=saus_roomcard+? where idx=?;', // $amount, $dbSalesInfo[0]['idx']); // if (!$ret || !$this->PDO_IsDone()) // throw new Exception($this->GetErrorInfo(), $this->GetErrorCode()); // if (!empty($dbSalesInfo[0]['user_id'])) // { // $ret = $this->pdo_execute(/** @lang text */ // 'update ct_user_account set card = card + ? where agent_id = ? and channel_id = ? and user_id = ?', // $amount, $agentID, $channelID, $dbSalesInfo[0]['user_id']); // if (!$ret) // throw new Exception($this->GetErrorInfo(), $this->GetErrorCode()); // } //记录日志 $log_res = $this->PDO_Execute(/** @lang text */ ' INSERT INTO ct_user_process_log(from_agent, from_channel, from_user, to_agent, to_channel, to_user, oper_type, oper_data, remark, oper_time, is_process) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', $agentID, $channelID, $salesID, $agentID, $channelID, $deductID, 2, -$amount, '总代理扣除玩家房卡', time(), 0); if (!$log_res) throw new Exception($this->GetErrorInfo(), $this->GetErrorCode()); //记录本地日志 $ret = $this->PDO_Execute(/** @lang */ ' insert into sales_operate_log (agent_id, channel_id, player_id, to_agent_id, to_channel_id, to_player_id, operate_type, operate_data, create_time) values (?, ?, ?, ?, ?, ?, ?, ?, ?)', $agentID, $channelID, $salesID, $agentID, $channelID, $deductID, 21, json_encode(array( 'before' => $dbPlayerInfo[0]['play_roomcard'], 'deduct' => $amount, 'after' => ($dbPlayerInfo[0]['play_roomcard'] - $amount), )), date('Y-m-d H:i:s', time())); if (!$ret || !$this->PDO_IsDone()) throw new Exception($this->GetErrorInfo(), $this->GetErrorCode()); $sql = /** @lang */'INSERT INTO ct_manager_production_info ( agent_id, channel_id, from_user, to_user, user_type, production_type, amount, before_update, after_update, oper_type, create_time, source_from, remark) VALUES ( ?,?,?,?,1,1, ?,?,?,2,now(),?, ?);'; $ret = $this->PDO_Execute($sql, $agentID, $channelID, $salesID, $deductID, $amount, $dbPlayerInfo[0]['play_roomcard'], ($dbPlayerInfo[0]['play_roomcard'] - $amount), $salesID, '总代扣卡'); if (!$ret || !$this->PDO_IsDone()) throw new Exception($this->GetErrorInfo(), $this->GetErrorCode()); $this->PDO_Commit(); return true; } catch (Exception $e) { $this->PDO_Rollback(); $outParam->SetErrors($e->getCode(), $e->getMessage()); return false; } //事务结束 } else if ($type == 1) { //扣玩家星星,判断玩家是否存在 $dbPlayerInfo = $this->PDO_Request(/** @lang */ ' SELECT idx, play_bean FROM player WHERE play_agentid=? AND play_channelid=? AND play_playerid=?', $agentID, $channelID, $deductID); if (!is_array($dbPlayerInfo)) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } if (count($dbPlayerInfo) < 1) { $outParam->SetErrors(ERRORCODE_PLAYERNOTEXISTERROR, ERRORINFO_PLAYERNOTEXISTERROR); return false; } //判断玩家房卡数是否够 //获取游戏中,玩家房卡数量 /*$gamePlayerInfo = $this->getGamePlayerInfo($agentID, $deductID, REQUEST_USER_INFO); if (!is_array($gamePlayerInfo)) { $outParam->SetErrors(ERRORCODE_PLAYERNOTEXISTERROR, ERRORINFO_PLAYERNOTEXISTERROR); return false; } if (!isset($gamePlayerInfo['data']['bean'])) { $outParam->SetErrors(ERRORCODE_PLAYERNOTEXISTERROR, ERRORINFO_PLAYERNOTEXISTERROR); return false; } $gamePlayerBean = intval($gamePlayerInfo['data']['bean']); //判断房卡数是否够 if ($gamePlayerBean < $amount) { $outParam->SetErrors(ERRORCODE_STARNOENOUGHERROR, ERRORINFO_STARNOENOUGHERROR); return false; } $leftBean = $gamePlayerBean - $amount; if ($leftBean < 0) $leftBean = 0;*/ if ($dbPlayerInfo[0]['play_bean'] < $amount) { $outParam->SetErrors(ERRORCODE_STARNOENOUGHERROR, ERRORINFO_STARNOENOUGHERROR); return false; } $leftBean = $dbPlayerInfo[0]['play_bean'] - $amount; //事务开始 //扣除玩家星星 $this->PDO_BeginTransaction(); try { $ret = $this->PDO_Execute(/** @lang */ 'update player set play_bean=? where idx=?;', $leftBean, $dbPlayerInfo[0]['idx']); if (!$ret || !$this->PDO_IsDone()) throw new Exception($this->GetErrorInfo(), $this->GetErrorCode()); //把星星加入到总代理里面 // $ret = $this->PDO_Execute(/** @lang */ // 'update sales_user set saus_bean=saus_bean+? where idx=?;', $amount, $dbSalesInfo[0]['idx']); // if (!$ret || !$this->PDO_IsDone()) // throw new Exception($this->GetErrorInfo(), $this->GetErrorCode()); // // if (!empty($dbSalesInfo[0]['user_id'])) // { // $ret = $this->pdo_execute(/** @lang text */ // 'update ct_user_account set currency = currency + ? where agent_id = ? and channel_id = ? and user_id = ?', // $amount, $agentID, $channelID, $dbSalesInfo[0]['user_id']); // if (!$ret) // throw new Exception($this->GetErrorInfo(), $this->GetErrorCode()); // } //记录日志 $log_res = $this->PDO_Execute(/** @lang text */ ' INSERT INTO ct_user_process_log(from_agent, from_channel, from_user, to_agent, to_channel, to_user, oper_type, oper_data, remark, oper_time, is_process) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', $agentID, $channelID, $salesID, $agentID, $channelID, $deductID, 12, -$amount, '总代理扣除玩家星星', time(), 0); if (!$log_res) throw new Exception($this->GetErrorInfo(), $this->GetErrorCode()); //记录本地日志 //记录本地日志 $ret = $this->PDO_Execute(/** @lang */ ' insert into sales_operate_log (agent_id, channel_id, player_id, to_agent_id, to_channel_id, to_player_id, operate_type, operate_data, create_time) values (?, ?, ?, ?, ?, ?, ?, ?, ?)', $agentID, $channelID, $salesID, $agentID, $channelID, $deductID, 23, json_encode(array( 'before' => $dbPlayerInfo[0]['play_bean'], 'deduct' => $amount, 'after' => $leftBean, )), date('Y-m-d H:i:s', time())); if (!$ret || !$this->PDO_IsDone()) throw new Exception($this->GetErrorInfo(), $this->GetErrorCode()); $sql = /** @lang */'INSERT INTO ct_manager_production_info ( agent_id, channel_id, from_user, to_user, user_type, production_type, amount, before_update, after_update, oper_type, create_time, source_from, remark) VALUES ( ?,?,?,?,1,2, ?,?,?,2,now(),?, ?);'; $ret = $this->PDO_Execute($sql, $agentID, $channelID, $salesID, $deductID, $amount, $dbPlayerInfo[0]['play_bean'], $leftBean, $salesID, '总代扣星星'); if (!$ret || !$this->PDO_IsDone()) throw new Exception($this->GetErrorInfo(), $this->GetErrorCode()); $this->PDO_Commit(); return true; } catch (Exception $e) { $this->PDO_Rollback(); $outParam->SetErrors($e->getCode(), $e->getMessage()); return false; } //事务结束 } else return false; } /** * 总代理扣除 代理 的房卡或星星 * 被请求方法示例:参数固定为RequestParameter和ReturnParameter对象,返回值固定为true(成功)和false(失败) * @param RequestParameter $inParam * @param ReturnParameter $outParam * @return bool */ public function deductSales($inParam, $outParam) { $request_data = isset($inParam->biz_content) ? $inParam->biz_content : ''; if (!is_array($request_data)) { //参数格式错误 $outParam->SetErrors(ERRORCODE_INPARAMERROR, ERRORINFO_INPARAMERROR); return false; } $agentID = isset($request_data['agentid']) ? $request_data['agentid'] : ''; if (empty($agentID)) { $outParam->SetErrors(ERRORCODE_AGENTIDERROR, ERRORINFO_AGENTIDERROR); return false; } $channelID = isset($request_data['channelid']) ? $request_data['channelid'] : ''; if (empty($channelID)) { $outParam->SetErrors(ERRORCODE_CHANNELIDERROR, ERRORINFO_CHANNELIDERROR); return false; } //操作人id $salesID = isset($request_data['salesid']) ? $request_data['salesid'] : ''; if (empty($salesID)) { $outParam->SetErrors(ERRORCODE_SALESIDERROR, ERRORINFO_SALESIDERROR); return false; } //被扣id $deductID = isset($request_data['deductid']) ? $request_data['deductid'] : ''; if (empty($deductID)) { $outParam->SetErrors(ERRORCODE_SALESIDERROR, ERRORINFO_SALESIDERROR); return false; } // 不能自己扣自己 if($salesID == $deductID) { $outParam->SetErrors(200, '不能扣除自己'); return false; } //扣除数量 $amount = isset($request_data['amount']) ? intval($request_data['amount']) : 0; if ($amount <= 0) { $outParam->SetErrors(ERRORCODE_AMOUNTERROR, ERRORINFO_AMOUNTERROR); return false; } //操作类型 0、扣除代理房卡,1、扣除代理星星 $type = isset($request_data['type']) ? intval($request_data['type']) : 0; //只有总代理才有权限 $dbSalesInfo = $this->PDO_Request(/** @lang text */ 'select idx, user_id, global_power from sales_user where saus_agentid=? and saus_channelid=? and saus_salesid=?', $agentID, $channelID, $salesID); if (!is_array($dbSalesInfo)) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } if (count($dbSalesInfo) < 1) { $outParam->SetErrors(ERRORCODE_SALESNOTEXISTERROR, ERRORINFO_SALESNOTEXISTERROR); return false; } //不是总代理,没有权限 if (intval($dbSalesInfo[0]['global_power']) != 1) { $outParam->SetErrors(ERRORCODE_NOPOWERERROR, ERRORINFO_NOPOWERERROR); return false; } $sales_user = $dbSalesInfo[0]['user_id']; /// 代理的用户号 //扣代理房卡/星星, 获取代理信息 $dbDeductInfo = $this->PDO_Request(/** @lang text */ 'select idx, user_id, saus_roomcard, saus_bean, global_power from sales_user where saus_agentid=? and saus_channelid=? and saus_salesid=?', $agentID, $channelID, $deductID); if (!is_array($dbDeductInfo)) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } if (count($dbDeductInfo) < 1) { $outParam->SetErrors(ERRORCODE_SALESNOTEXISTERROR, ERRORINFO_SALESNOTEXISTERROR); return false; } if ($dbDeductInfo[0]['global_power'] == 1) { $outParam->SetErrors(200, '不能扣除总代理'); return false; } if ($type == 0) { /// 被扣代理的用户号 if (empty($deduct_user = $dbDeductInfo[0]['user_id'])) $salesCard = intval($dbDeductInfo[0]['saus_roomcard']); else { $ret = $this->pdo_request(/** @lang text */ 'select card from ct_user_account where agent_id = ? and channel_id = ? and user_id = ?', $agentID, $channelID, $deduct_user); if (!$this->pdo_isdone()) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } $salesCard = $ret[0]['card']; } if ($salesCard < $amount) { $outParam->SetErrors(ERRORCODE_ROOMCARDENOUGHERROR, ERRORINFO_ROOMCARDENOUGHERROR); return false; } $leftCard = $salesCard - $amount; if ($leftCard < 0) $leftCard = 0; //事务开始 $this->PDO_BeginTransaction(); try { if ($amount <= intval($dbDeductInfo[0]['saus_roomcard'])) /// 如果当前账户足够本次扣减,则直接扣除 { $ret = $this->pdo_execute(/** @lang text */ 'update sales_user set saus_roomcard = saus_roomcard - ? where idx = ?', $amount, $dbDeductInfo[0]['idx']); if (!$ret) throw new Exception($this->GetErrorInfo(), $this->GetErrorCode()); } else { /// 如果当前账户不够本次扣减,则先清空当前账户,再扣除绑定的其他账户 $ret = $this->pdo_execute(/** @lang text */ 'update sales_user set saus_roomcard = 0 where idx = ?', $dbDeductInfo[0]['idx']); if (!$ret) throw new Exception($this->GetErrorInfo(), $this->GetErrorCode()); /// 扣除绑定的其他账户 $need_amount = $amount - intval($dbDeductInfo[0]['saus_roomcard']); $command = /** @lang text */<<pdo_execute($command, $agentID, $channelID, $deduct_user)) throw new Exception($this->GetErrorInfo(), $this->GetErrorCode()); } /// 把代理扣除房卡,加入到总代里面 // $ret = $this->PDO_Execute(/** @lang */ // 'update sales_user set saus_roomcard=saus_roomcard+? where idx=?;', // $amount, $dbSalesInfo[0]['idx']); // if (!$ret) // throw new Exception($this->GetErrorInfo(), $this->GetErrorCode()); /// 如果有绑定主账户,则需要更新主账户信息 if (!empty($sales_user)) { $ret = $this->pdo_execute(/** @lang text */ 'update ct_user_account set card = card + ? where agent_id = ? and channel_id = ? and user_id = ?', $amount, $agentID, $channelID, $sales_user); if (!$ret) throw new Exception($this->GetErrorInfo(), $this->GetErrorCode()); } /// 记录本地日志 $ret = $this->PDO_Execute(/** @lang */ 'insert into sales_operate_log(agent_id, channel_id, player_id, to_agent_id, to_channel_id, to_player_id, operate_type, operate_data, create_time)values(?, ?, ?, ?, ?, ?, ?, ?, ?)', $agentID, $channelID, $salesID, $agentID, $channelID, $deductID, 22, json_encode(array( 'before' => $salesCard, 'deduct' => $amount, 'after' => $leftCard, )), date('Y-m-d H:i:s', time())); if (!$ret || !$this->PDO_IsDone()) throw new Exception($this->GetErrorInfo(), $this->GetErrorCode()); $sql = /** @lang */'INSERT INTO ct_manager_production_info ( agent_id, channel_id, from_user, to_user, user_type, production_type, amount, before_update, after_update, oper_type, create_time, source_from, remark) VALUES ( ?,?,?,?,2,1, ?,?,?,2,now(),?, ?);'; $ret = $this->PDO_Execute($sql, $agentID, $channelID, $salesID, $deductID, $amount, $salesCard, $leftCard, $salesID, '总代扣卡'); if (!$ret || !$this->PDO_IsDone()) throw new Exception($this->GetErrorInfo(), $this->GetErrorCode()); $this->PDO_Commit(); return true; } catch (Exception $e) { $this->PDO_Rollback(); $outParam->SetErrors($e->getCode(), $e->getMessage()); return false; } //事务结束 } else if ($type == 1) { /// 被扣代理的用户号 if (empty($deduct_user = $dbDeductInfo[0]['user_id'])) $saleBean = intval($dbDeductInfo[0]['saus_bean']); else { $ret = $this->pdo_request(/** @lang text */ 'select currency from ct_user_account where agent_id = ? and channel_id = ? and user_id = ?', $agentID, $channelID, $deduct_user); if (!$this->pdo_isdone()) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } $saleBean = $ret[0]['currency']; } if ($saleBean < $amount) { $outParam->SetErrors(ERRORCODE_STARNOENOUGHERROR, ERRORINFO_STARNOENOUGHERROR); return false; } $leftBean = $saleBean - $amount; if ($leftBean < 0) $leftBean = 0; /// 事务开始 $this->PDO_BeginTransaction(); try { if ($amount <= intval($dbDeductInfo[0]['saus_bean'])) /// 如果当前账户足够本次扣减,则直接扣除 { $ret = $this->pdo_execute(/** @lang text */ 'update sales_user set saus_bean = saus_bean - ? where idx = ?', $amount, $dbDeductInfo[0]['idx']); if (!$ret) throw new Exception($this->GetErrorInfo(), $this->GetErrorCode()); } else { /// 如果当前账户不够本次扣减,则先清空当前账户,再扣除绑定的其他账户 $ret = $this->pdo_execute(/** @lang text */ 'update sales_user set saus_bean = 0 where idx = ?', $dbDeductInfo[0]['idx']); if (!$ret) throw new Exception($this->GetErrorInfo(), $this->GetErrorCode()); /// 扣除绑定的其他账户 $need_amount = $amount - intval($dbDeductInfo[0]['saus_bean']); $command = /** @lang text */<<pdo_execute($command, $agentID, $channelID, $deduct_user)) throw new Exception($this->GetErrorInfo(), $this->GetErrorCode()); } /// 把代理扣除的星星,加入到总代里面 // $ret = $this->PDO_Execute(/** @lang */ // 'update sales_user set saus_bean = saus_bean + ? where idx=?;', // $amount, $dbSalesInfo[0]['idx']); // if (!$ret) // throw new Exception($this->GetErrorInfo(), $this->GetErrorCode()); /// 如果有绑定主账户,则需要更新主账户信息 if (!empty($sales_user)) { $ret = $this->pdo_execute(/** @lang text */ 'update ct_user_account set currency = currency + ? where agent_id = ? and channel_id = ? and user_id = ?', $amount, $agentID, $channelID, $sales_user); if (!$ret) throw new Exception($this->GetErrorInfo(), $this->GetErrorCode()); } //记录本地日志 $ret = $this->PDO_Execute(/** @lang */ 'insert into sales_operate_log (agent_id, channel_id, player_id, to_agent_id, to_channel_id, to_player_id, operate_type, operate_data, create_time) values (?, ?, ?, ?, ?, ?, ?, ?, ?)', $agentID, $channelID, $salesID, $agentID, $channelID, $deductID, 24, json_encode(array( 'before' => $saleBean, 'deduct' => $amount, 'after' => $leftBean, )), date('Y-m-d H:i:s', time())); if (!$ret || !$this->PDO_IsDone()) throw new Exception($this->GetErrorInfo(), $this->GetErrorCode()); $sql = /** @lang */'INSERT INTO ct_manager_production_info ( agent_id, channel_id, from_user, to_user, user_type, production_type, amount, before_update, after_update, oper_type, create_time, source_from, remark) VALUES ( ?,?,?,?,2,2, ?,?,?,2,now(),?, ?);'; $ret = $this->PDO_Execute($sql, $agentID, $channelID, $salesID, $deductID, $amount, $saleBean, $leftBean, $salesID, '总代扣星星'); if (!$ret || !$this->PDO_IsDone()) throw new Exception($this->GetErrorInfo(), $this->GetErrorCode()); $this->PDO_Commit(); return true; } catch (Exception $e) { $this->PDO_Rollback(); $outParam->SetErrors($e->getCode(), $e->getMessage()); return false; } //事务结束 } else return false; } /** * 总代理查询代理下面的所有子代理或者玩家 * 被请求方法示例:参数固定为RequestParameter和ReturnParameter对象,返回值固定为true(成功)和false(失败) * @param RequestParameter $inParam * @param ReturnParameter $outParam * @return bool */ public function salesChilds($inParam, $outParam) { $request_data = isset($inParam->biz_content) ? $inParam->biz_content : ''; if (!is_array($request_data)) { //参数格式错误 $outParam->SetErrors(ERRORCODE_INPARAMERROR, ERRORINFO_INPARAMERROR); return false; } $agentID = isset($request_data['agentid']) ? $request_data['agentid'] : ''; if (empty($agentID)) { $outParam->SetErrors(ERRORCODE_AGENTIDERROR, ERRORINFO_AGENTIDERROR); return false; } $channelID = isset($request_data['channelid']) ? $request_data['channelid'] : ''; if (empty($channelID)) { $outParam->SetErrors(ERRORCODE_CHANNELIDERROR, ERRORINFO_CHANNELIDERROR); return false; } //操作人id $salesID = isset($request_data['salesid']) ? $request_data['salesid'] : ''; if (empty($salesID)) { $outParam->SetErrors(ERRORCODE_SALESIDERROR, ERRORINFO_SALESIDERROR); return false; } //查询的代理id $queryID = isset($request_data['queryid']) ? $request_data['queryid'] : ''; if (empty($queryID)) { $outParam->SetErrors(ERRORCODE_SALESIDERROR, ERRORINFO_SALESIDERROR); return false; } //操作类型 0、查询子代理,1、查询绑定的玩家 $type = isset($request_data['type']) ? intval($request_data['type']) : 0; $page_index = empty($request_data['page_index']) ? 1 : intval($request_data['page_index']); $page_size = empty($request_data['page_size']) ? 10 : intval($request_data['page_size']); $start = ($page_index - 1) * $page_size; $strPage = ''; if (!empty($request_data['page_index'])) { $strPage .= " LIMIT {$start},{$page_size} "; } //只有总代理才有权限 $dbSalesInfo = $this->PDO_Request(/** @lang */ ' SELECT idx, global_power FROM sales_user WHERE saus_agentid=? AND saus_channelid=? AND saus_salesid=?', $agentID, $channelID, $salesID); if (!is_array($dbSalesInfo)) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } if (count($dbSalesInfo) < 1) { $outParam->SetErrors(ERRORCODE_SALESNOTEXISTERROR, ERRORINFO_SALESNOTEXISTERROR); return false; } //不是总代理,没有权限 if (intval($dbSalesInfo[0]['global_power']) != 1) { $outParam->SetErrors(ERRORCODE_NOPOWERERROR, ERRORINFO_NOPOWERERROR); return false; } $dbQueryInfo = $this->PDO_Request(/** @lang */ ' SELECT idx, saus_bean FROM sales_user WHERE saus_agentid=? AND saus_channelid=? AND saus_salesid=?', $agentID, $channelID, $queryID); if (!is_array($dbQueryInfo)) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } if (count($dbQueryInfo) < 1) { $outParam->SetErrors(ERRORCODE_SALESNOTEXISTERROR, ERRORINFO_SALESNOTEXISTERROR); return false; } if ($type == 0) { //查询代理下面的所有子代理 $childs = $this->PDO_Request(/** @lang */ " SELECT saus_nickname as nickname, saus_avatar as avatar, saus_sex, saus_salesid as id, saus_level, saus_roomcard as roomcard, saus_bean as star, saus_power, saus_status, global_power, saus_tel as tel, saus_wechat as wechat FROM sales_user WHERE saus_agentid=? AND saus_channelid=? AND saus_parentid=? ORDER BY idx desc {$strPage};", $agentID, $channelID, $queryID); if (!is_array($childs)) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } $page_count = 1; if (!empty($request_data['page_index'])) { $dbData = $this->PDO_Request(/** @lang text */ " SELECT count(1) num FROM sales_user WHERE saus_agentid=? AND saus_channelid=? AND saus_parentid=?;", $agentID, $channelID, $queryID); if (!is_array($dbData) || count($dbData) < 1) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } $page_count = intval($dbData[0]['num']) / $page_size + 1; } $outParam->biz_content = array( 'detail' => $childs, 'page_index' => $page_index, 'page_size' => $page_size, 'page_count' => $page_count, ); return true; } else if ($type == 1) { //查询代理下面的所有玩家 $childs = $this->PDO_Request(/** @lang */ " SELECT play_playerid as id, play_nickname as nickname, play_avatar as avatar, play_sex, play_roomcard as roomcard, play_bean as star, play_status FROM player WHERE play_agentid=? AND play_channelid=? AND play_invitecode=? ORDER BY idx DESC {$strPage};", $agentID, $channelID, $queryID); if (!is_array($childs)) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } $page_count = 1; if (!empty($request_data['page_index'])) { $dbData = $this->PDO_Request(/** @lang text */ " SELECT count(1) num FROM player WHERE play_agentid=? AND play_channelid=? AND play_invitecode=?;", $agentID, $channelID, $queryID); if (!is_array($dbData) || count($dbData) < 1) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } $page_count = intval($dbData[0]['num']) / $page_size + 1; } $outParam->biz_content = array( 'detail' => $childs, 'page_index' => $page_index, 'page_size' => $page_size, 'page_count' => $page_count, ); return true; } else return false; } /** * 总代理查询玩家房卡或星星流水记录 * 被请求方法示例:参数固定为RequestParameter和ReturnParameter对象,返回值固定为true(成功)和false(失败) * @param RequestParameter $inParam * @param ReturnParameter $outParam * @return bool */ public function playerCardStarRecord($inParam, $outParam) { $request_data = isset($inParam->biz_content) ? $inParam->biz_content : ''; if (!is_array($request_data)) { //参数格式错误 $outParam->SetErrors(ERRORCODE_INPARAMERROR, ERRORINFO_INPARAMERROR); return false; } $agentID = isset($request_data['agentid']) ? $request_data['agentid'] : ''; if (empty($agentID)) { $outParam->SetErrors(ERRORCODE_AGENTIDERROR, ERRORINFO_AGENTIDERROR); return false; } $channelID = isset($request_data['channelid']) ? $request_data['channelid'] : ''; if (empty($channelID)) { $outParam->SetErrors(ERRORCODE_CHANNELIDERROR, ERRORINFO_CHANNELIDERROR); return false; } //操作人id $salesID = isset($request_data['salesid']) ? $request_data['salesid'] : ''; if (empty($salesID)) { $outParam->SetErrors(ERRORCODE_SALESIDERROR, ERRORINFO_SALESIDERROR); return false; } $playerID = isset($request_data['playerid']) ? $request_data['playerid'] : ''; if (empty($playerID)) { $outParam->SetErrors(ERRORCODE_PLAYERIDERROR, ERRORINFO_PLAYERIDERROR); return false; } $str_time = ''; $array_param = array( $agentID, $playerID, ); $beginTime = isset($request_data['begintime']) ? $request_data['begintime'] : ''; $endTime = isset($request_data['endtime']) ? $request_data['endtime'] : ''; $page_index = empty($request_data['page_index']) ? 1 : intval($request_data['page_index']); $page_size = empty($request_data['page_size']) ? 10 : intval($request_data['page_size']); $start = ($page_index - 1) * $page_size; $strPage = ''; if (!empty($request_data['page_index'])) { $strPage .= " LIMIT {$start},{$page_size} "; } /// 操作类型 0、查询房卡,1、查询星星 $type = isset($request_data['type']) ? intval($request_data['type']) : 0; /// 只有总代理才有权限 $dbSalesInfo = $this->PDO_Request(/** @lang */'select idx, global_power from sales_user where saus_agentid=? and saus_channelid=? and saus_salesid=?', $agentID, $channelID, $salesID); if (!is_array($dbSalesInfo)) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } if (count($dbSalesInfo) < 1) { $outParam->SetErrors(ERRORCODE_SALESNOTEXISTERROR, ERRORINFO_SALESNOTEXISTERROR); return false; } /// 不是总代理,没有权限 if (intval($dbSalesInfo[0]['global_power']) != 1) { $outParam->SetErrors(ERRORCODE_NOPOWERERROR, ERRORINFO_NOPOWERERROR); return false; } /// 判断玩家是否存在 $dbPlayerInfo = $this->PDO_Request(/** @lang */'select idx, play_openid from player where play_agentid=? and play_playerid=?;', $agentID, $playerID); if (!is_array($dbPlayerInfo)) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } if (count($dbPlayerInfo) < 1) { $outParam->SetErrors(ERRORCODE_PLAYERNOTEXISTERROR, ERRORINFO_PLAYERNOTEXISTERROR); return false; } $page_count = 1; //0、房卡记录,1、星星记录 if ($type == 0) { if (!empty($beginTime)) { $str_time .= ' and a.sase_selltime >= ? '; $array_param[] = $beginTime; } if (!empty($endTime)) { $str_time .= ' and a.sase_selltime <= ? '; $array_param[] = $endTime; } if (!empty($beginTime) && !empty($endTime) && $beginTime > $endTime) { $outParam->SetErrors(ERRORCODE_TIMEERROR, ERRORINFO_TIMEERROR); return false; } $command = /** @lang text */<<PDO_Request($command, $array_param); if (!$this->PDO_IsDone() || !is_array($dbRecord)) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } if (!empty($request_data['page_index'])) { $command = /** @lang text */<<PDO_Request($command, $array_param); if (!is_array($dbCount) || count($dbCount) < 1) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } $page_count = intval($dbCount[0]['num']) / $page_size + 1; } } elseif ($type == 1) { if (!empty($beginTime)) { $str_time .= ' and a.ssbe_selltime >= ? '; $array_param[] = $beginTime; } if (!empty($endTime)) { $str_time .= ' and a.ssbe_selltime <= ? '; $array_param[] = $endTime; } if (!empty($beginTime) && !empty($endTime) && $beginTime > $endTime) { $outParam->SetErrors(ERRORCODE_TIMEERROR, ERRORINFO_TIMEERROR); return false; } $command = /** @lang text */<<PDO_Request($command, $array_param); if (!$this->PDO_IsDone() || !is_array($dbRecord)) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } if (!empty($request_data['page_index'])) { $command = /** @lang text */<<PDO_Request($command, $array_param); if (!is_array($dbCount) || count($dbCount) < 1) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } $page_count = intval($dbCount[0]['num']) / $page_size + 1; } } else { return false; } $outParam->biz_content = array( 'record' => $dbRecord, 'page_index' => $page_index, 'page_size' => $page_size, 'page_count' => intval($page_count), ); return true; } /** * 总代理查询代理房卡或星星 获得 记录 * 被请求方法示例:参数固定为RequestParameter和ReturnParameter对象,返回值固定为true(成功)和false(失败) * @param RequestParameter $inParam * @param ReturnParameter $outParam * @return bool */ public function salesCardStarRecord($inParam, $outParam) { $request_data = isset($inParam->biz_content) ? $inParam->biz_content : ''; if (!is_array($request_data)) { //参数格式错误 $outParam->SetErrors(ERRORCODE_INPARAMERROR, ERRORINFO_INPARAMERROR); return false; } $agentID = isset($request_data['agentid']) ? $request_data['agentid'] : ''; if (empty($agentID)) { $outParam->SetErrors(ERRORCODE_AGENTIDERROR, ERRORINFO_AGENTIDERROR); return false; } $channelID = isset($request_data['channelid']) ? $request_data['channelid'] : ''; if (empty($channelID)) { $outParam->SetErrors(ERRORCODE_CHANNELIDERROR, ERRORINFO_CHANNELIDERROR); return false; } //操作人id $salesID = isset($request_data['salesid']) ? $request_data['salesid'] : ''; if (empty($salesID)) { $outParam->SetErrors(ERRORCODE_SALESIDERROR, ERRORINFO_SALESIDERROR); return false; } //查询的id $queryID = isset($request_data['queryid']) ? $request_data['queryid'] : ''; if (empty($queryID)) { $outParam->SetErrors(ERRORCODE_SALESIDERROR, ERRORINFO_SALESIDERROR); return false; } $str_time = ''; //$array_param = array($agentID, $queryID, $channelID); $beginTime = isset($request_data['begintime']) ? $request_data['begintime'] : ''; $endTime = isset($request_data['endtime']) ? $request_data['endtime'] : ''; $page_index = empty($request_data['page_index']) ? 1 : intval($request_data['page_index']); $page_size = empty($request_data['page_size']) ? 10 : intval($request_data['page_size']); $start = ($page_index - 1) * $page_size; $strPage = ''; if (!empty($request_data['page_index'])) { $strPage .= " LIMIT {$start},{$page_size} "; } //操作类型 0、查询房卡,1、查询星星 $type = isset($request_data['type']) ? intval($request_data['type']) : 0; /// 只有总代理才有权限 $dbSalesInfo = $this->PDO_Request(/** @lang */'select idx, global_power from sales_user where saus_agentid=? and saus_channelid=? and saus_salesid=?', $agentID, $channelID, $salesID); if (!is_array($dbSalesInfo)) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo() . __FILE__ . '(' . __LINE__ . ')'); return false; } if (count($dbSalesInfo) < 1) { $outParam->SetErrors(ERRORCODE_SALESNOTEXISTERROR, ERRORINFO_SALESNOTEXISTERROR); return false; } //不是总代理,没有权限 if (intval($dbSalesInfo[0]['global_power']) != 1) { $outParam->SetErrors(ERRORCODE_NOPOWERERROR, ERRORINFO_NOPOWERERROR); return false; } //要查询的代理信息 $dbQueryInfo = $this->PDO_Request(/** @lang */'select idx, saus_openid, saus_unionid from sales_user where saus_agentid=? and saus_salesid=?;', $agentID, $queryID); if (!is_array($dbQueryInfo)) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo() . __FILE__ . '(' . __LINE__ . ')'); return false; } if (count($dbQueryInfo) < 1) { $outParam->SetErrors(ERRORCODE_SALESNOTEXISTERROR, ERRORINFO_SALESNOTEXISTERROR); return false; } $page_count = 1; if ($type == 0) { $array_param = array( $agentID, $queryID, ); if (!empty($beginTime)) { $str_time .= ' and a.satr_transfertime >= ? '; $array_param[] = $beginTime; } if (!empty($endTime)) { $str_time .= ' and a.satr_transfertime <= ? '; $array_param[] = $endTime; } if (!empty($beginTime) && !empty($endTime) && $beginTime > $endTime) { $outParam->SetErrors(ERRORCODE_TIMEERROR, ERRORINFO_TIMEERROR); return false; } $command = /** @lang text */<<PDO_Request($command, $array_param); if (!is_array($dbRecord)) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo() . __FILE__ . '(' . __LINE__ . ')'); return false; } if (!empty($request_data['page_index'])) { $command = /** @lang text */<<PDO_Request($command, $array_param); if (!is_array($dbCount) || count($dbCount) < 1) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo() . __FILE__ . '(' . __LINE__ . ')'); return false; } $page_count = intval($dbCount[0]['num']) / $page_size + 1; } } elseif ($type == 1) { $array_param = array( $agentID, $queryID, $channelID, ); if (!empty($beginTime)) { $str_time .= ' and a.op_time >= ? '; $array_param[] = $beginTime; } if (!empty($endTime)) { $str_time .= ' and a.op_time <= ? '; $array_param[] = $endTime; } if (!empty($beginTime) && !empty($endTime) && $beginTime > $endTime) { $outParam->SetErrors(ERRORCODE_TIMEERROR, ERRORINFO_TIMEERROR); return false; } $command = /** @lang text */<<PDO_Request($command, $array_param); if (!is_array($dbRecord)) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo() . __FILE__ . '(' . __LINE__ . ')'); return false; } if (!empty($request_data['page_index'])) { $command = /** @lang text */<<PDO_Request($command, $array_param); if (!is_array($dbCount) || count($dbCount) < 1) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo() . __FILE__ . '(' . __LINE__ . ')'); return false; } $page_count = intval($dbCount[0]['num']) / $page_size + 1; } } else { return false; } $outParam->biz_content = array( 'record' => $dbRecord, 'page_index' => $page_index, 'page_size' => $page_size, 'page_count' => intval($page_count), ); return true; } /** * 总代理查询代理房卡或星星 消耗 记录 * 被请求方法示例:参数固定为RequestParameter和ReturnParameter对象,返回值固定为true(成功)和false(失败) * @param RequestParameter $inParam * @param ReturnParameter $outParam * @return bool */ public function salesCardStarDeduct($inParam, $outParam) { $request_data = isset($inParam->biz_content) ? $inParam->biz_content : ''; if (!is_array($request_data)) { //参数格式错误 $outParam->SetErrors(ERRORCODE_INPARAMERROR, ERRORINFO_INPARAMERROR); return false; } $agent_id = @$request_data['agentid']; $channel_id = @$request_data['channelid']; $sales_id = @$request_data['salesid']; $query_id = @$request_data['queryid']; $beginTime = isset($request_data['begintime']) ? $request_data['begintime'] : ''; $endTime = isset($request_data['endtime']) ? $request_data['endtime'] : ''; $page_index = empty($request_data['page_index']) ? 1 : intval($request_data['page_index']); $page_size = empty($request_data['page_size']) ? 10 : intval($request_data['page_size']); /// 操作类型 0、查询房卡,1、查询星星 $type = isset($request_data['type']) ? intval($request_data['type']) : 0; if (empty($agent_id)) { $outParam->SetErrors(ERRORCODE_AGENTIDERROR, ERRORINFO_AGENTIDERROR); return false; } if (empty($channel_id)) { $outParam->SetErrors(ERRORCODE_CHANNELIDERROR, ERRORINFO_CHANNELIDERROR); return false; } if (empty($sales_id)) { $outParam->SetErrors(ERRORCODE_SALESIDERROR, ERRORINFO_SALESIDERROR); return false; } //查询的id if (empty($query_id)) { $outParam->SetErrors(ERRORCODE_SALESIDERROR, ERRORINFO_SALESIDERROR); return false; } $str_time = ''; $start = ($page_index - 1) * $page_size; $strPage = ''; if (!empty($request_data['page_index'])) { $strPage .= " limit {$start},{$page_size} "; } //只有总代理才有权限 $dbSalesInfo = $this->PDO_Request(/** @lang */' select idx, global_power from sales_user where saus_agentid=? and saus_channelid=? and saus_salesid=?', $agent_id, $channel_id, $sales_id); if (!is_array($dbSalesInfo)) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } if (count($dbSalesInfo) < 1) { $outParam->SetErrors(ERRORCODE_SALESNOTEXISTERROR, ERRORINFO_SALESNOTEXISTERROR); return false; } /// 不是总代理,没有权限 if (intval($dbSalesInfo[0]['global_power']) != 1) { $outParam->SetErrors(ERRORCODE_NOPOWERERROR, ERRORINFO_NOPOWERERROR); return false; } // //要查询的代理信息 // $dbQueryInfo = $this->PDO_Request(/** @lang */ // ' // SELECT idx, saus_openid, saus_unionid // FROM sales_user // WHERE saus_agentid=? AND saus_salesid=?;', $agentID, $queryID); // // if (!is_array($dbQueryInfo)) // { // $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); // return false; // } // // if (count($dbQueryInfo) < 1) // { // $outParam->SetErrors(ERRORCODE_SALESNOTEXISTERROR, ERRORINFO_SALESNOTEXISTERROR); // return false; // } $page_count = 1; if ($type == 0) /// 查询房卡 { $array_param = array($agent_id, $query_id,); if (!empty($beginTime)) { $str_time .= ' and a.satr_transfertime >= ? '; $array_param[] = $beginTime; } if (!empty($endTime)) { $str_time .= ' and a.satr_transfertime <= ? '; $array_param[] = $endTime; } if (!empty($beginTime) && !empty($endTime) && $beginTime > $endTime) { $outParam->SetErrors(ERRORCODE_TIMEERROR, ERRORINFO_TIMEERROR); return false; } $command = /** @lang text */<<PDO_Request($command, $array_param); if (!is_array($dbRecord)) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } if (!empty($request_data['page_index'])) { $command = /** @lang text */<<PDO_Request($command, $array_param); if (!is_array($dbCount) || count($dbCount) < 1) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } $page_count = intval($dbCount[0]['num']) / $page_size + 1; } } elseif ($type == 1) { $array_param = array($agent_id, $query_id, $channel_id,); if (!empty($beginTime)) { $str_time .= ' and a.op_time >= ? '; $array_param[] = $beginTime; } if (!empty($endTime)) { $str_time .= ' and a.op_time <= ? '; $array_param[] = $endTime; } if (!empty($beginTime) && !empty($endTime) && $beginTime > $endTime) { $outParam->SetErrors(ERRORCODE_TIMEERROR, ERRORINFO_TIMEERROR); return false; } $command = /** @lang text */<<PDO_Request($command, $array_param); if (!is_array($dbRecord)) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } if (!empty($request_data['page_index'])) { $command = /** @lang text */<<PDO_Request($command, $array_param); if (!is_array($dbCount) || count($dbCount) < 1) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } $page_count = intval($dbCount[0]['num']) / $page_size + 1; } } else return false; $outParam->biz_content = array( 'record' => $dbRecord, 'page_index' => $page_index, 'page_size' => $page_size, 'page_count' => intval($page_count), ); return true; } /** * 总代理查询代理权限 * 被请求方法示例:参数固定为RequestParameter和ReturnParameter对象,返回值固定为true(成功)和false(失败) * @param RequestParameter $inParam * @param ReturnParameter $outParam * @return bool */ public function getPower($inParam, $outParam) { $request_data = isset($inParam->biz_content) ? $inParam->biz_content : ''; if (!is_array($request_data)) { //参数格式错误 $outParam->SetErrors(ERRORCODE_INPARAMERROR, ERRORINFO_INPARAMERROR); return false; } $agentID = isset($request_data['agentid']) ? $request_data['agentid'] : ''; if (empty($agentID)) { $outParam->SetErrors(ERRORCODE_AGENTIDERROR, ERRORINFO_AGENTIDERROR); return false; } $channelID = isset($request_data['channelid']) ? $request_data['channelid'] : ''; if (empty($channelID)) { $outParam->SetErrors(ERRORCODE_CHANNELIDERROR, ERRORINFO_CHANNELIDERROR); return false; } //操作人id $salesID = isset($request_data['salesid']) ? $request_data['salesid'] : ''; if (empty($salesID)) { $outParam->SetErrors(ERRORCODE_SALESIDERROR, ERRORINFO_SALESIDERROR); return false; } //查询的id $queryID = isset($request_data['queryid']) ? $request_data['queryid'] : ''; if (empty($queryID)) { $outParam->SetErrors(ERRORCODE_SALESIDERROR, ERRORINFO_SALESIDERROR); return false; } //判断操作人是否是总代身份 //只有总代理才有权限 $dbSalesInfo = $this->PDO_Request(/** @lang */ ' SELECT idx, global_power FROM sales_user WHERE saus_agentid=? AND saus_channelid=? AND saus_salesid=?', $agentID, $channelID, $salesID); if (!is_array($dbSalesInfo)) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } if (count($dbSalesInfo) < 1) { $outParam->SetErrors(ERRORCODE_SALESNOTEXISTERROR, ERRORINFO_SALESNOTEXISTERROR); return false; } //不是总代理,没有权限 if (intval($dbSalesInfo[0]['global_power']) != 1) { $outParam->SetErrors(ERRORCODE_NOPOWERERROR, ERRORINFO_NOPOWERERROR); return false; } //要查询的代理信息 $dbQueryInfo = $this->PDO_Request(/** @lang */ ' SELECT idx, saus_openid, saus_unionid, saus_power, saus_nickname, saus_salesid, saus_avatar, is_vip FROM sales_user WHERE saus_agentid=? AND saus_salesid=?;', $agentID, $queryID); if (!is_array($dbQueryInfo)) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } if (count($dbQueryInfo) < 1) { $outParam->SetErrors(ERRORCODE_SALESNOTEXISTERROR, ERRORINFO_SALESNOTEXISTERROR); return false; } $outParam->biz_content = $dbQueryInfo[0]; return true; } /** * 总代理设置代理权限 * 被请求方法示例:参数固定为RequestParameter和ReturnParameter对象,返回值固定为true(成功)和false(失败) * @param RequestParameter $inParam * @param ReturnParameter $outParam * @return bool */ public function setPower($inParam, $outParam) { $request_data = isset($inParam->biz_content) ? $inParam->biz_content : ''; if (!is_array($request_data)) { //参数格式错误 $outParam->SetErrors(ERRORCODE_INPARAMERROR, ERRORINFO_INPARAMERROR); return false; } $agentID = isset($request_data['agentid']) ? $request_data['agentid'] : ''; if (empty($agentID)) { $outParam->SetErrors(ERRORCODE_AGENTIDERROR, ERRORINFO_AGENTIDERROR); return false; } $channelID = isset($request_data['channelid']) ? $request_data['channelid'] : ''; if (empty($channelID)) { $outParam->SetErrors(ERRORCODE_CHANNELIDERROR, ERRORINFO_CHANNELIDERROR); return false; } //操作人id $salesID = isset($request_data['salesid']) ? $request_data['salesid'] : ''; if (empty($salesID)) { $outParam->SetErrors(ERRORCODE_SALESIDERROR, ERRORINFO_SALESIDERROR); return false; } //设置的id $queryID = isset($request_data['queryid']) ? $request_data['queryid'] : ''; if (empty($queryID)) { $outParam->SetErrors(ERRORCODE_SALESIDERROR, ERRORINFO_SALESIDERROR); return false; } //设置的权限 if (!isset($request_data['power'])) { $outParam->SetErrors(ERRORCODE_POWERERROR, ERRORINFO_POWERERROR); return false; } $power = $request_data['power']; //vip if (!isset($request_data['is_vip'])) { $outParam->SetErrors(ERRORCODE_POWERERROR, '未设置vip'); return false; } $isVip = intval($request_data['is_vip']); //判断操作人是否是总代身份 //只有总代理才有权限 $dbSalesInfo = $this->PDO_Request(/** @lang */ ' SELECT idx, global_power FROM sales_user WHERE saus_agentid=? AND saus_channelid=? AND saus_salesid=?', $agentID, $channelID, $salesID); if (!is_array($dbSalesInfo)) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } if (count($dbSalesInfo) < 1) { $outParam->SetErrors(ERRORCODE_SALESNOTEXISTERROR, ERRORINFO_SALESNOTEXISTERROR); return false; } //不是总代理,没有权限 if (intval($dbSalesInfo[0]['global_power']) != 1) { $outParam->SetErrors(ERRORCODE_NOPOWERERROR, ERRORINFO_NOPOWERERROR); return false; } //要设置的代理信息 $dbQueryInfo = $this->PDO_Request(/** @lang */ ' SELECT idx, saus_openid, saus_unionid, saus_power FROM sales_user WHERE saus_agentid=? AND saus_salesid=?;', $agentID, $queryID); if (!is_array($dbQueryInfo)) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } if (count($dbQueryInfo) < 1) { $outParam->SetErrors(ERRORCODE_SALESNOTEXISTERROR, ERRORINFO_SALESNOTEXISTERROR); return false; } $ret = $this->PDO_Execute(/** @lang */ ' UPDATE sales_user SET saus_power=?, is_vip=? WHERE idx=?;', $power, $isVip, $dbQueryInfo[0]['idx']); if (!$ret) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } $outParam->biz_content = array( 'salesid' => $salesID, 'power' => $power, 'isvip' => $isVip, ); return true; } /** * 总代理设置玩家短号 * 被请求方法示例:参数固定为RequestParameter和ReturnParameter对象,返回值固定为true(成功)和false(失败) * @param RequestParameter $inParam * @param ReturnParameter $outParam * @return bool * method=agent.agent.shortNum&format=json&charset=utf-8×tamp=1&version=1.0&biz_content={"agentid":"00bA05haB0d9ZC0fwGD09Q2OA30insbQ","channelid":"frdt0C1GG0t91P0McFo0rbA1he5yurbS","salesid":"202734","playerid":"100006","roomnum":2,"desone":"哈哈哈","destwo":"哈哈哈2","shortnum":124} */ public function shortNum($inParam, $outParam) { $request_data = isset($inParam->biz_content) ? $inParam->biz_content : ''; if (!is_array($request_data)) { //参数格式错误 $outParam->SetErrors(ERRORCODE_INPARAMERROR, ERRORINFO_INPARAMERROR); return false; } $agentID = isset($request_data['agentid']) ? $request_data['agentid'] : ''; $channelID = isset($request_data['channelid']) ? $request_data['channelid'] : ''; //操作人id $salesID = isset($request_data['salesid']) ? $request_data['salesid'] : ''; $shortNum = isset($request_data['shortnum']) ? $request_data['shortnum'] : ''; //设置的玩家id $playerID = isset($request_data['playerid']) ? $request_data['playerid'] : ''; /// 新增短号描述1和短号描述2 $desOne = isset($request_data['desone']) ? $request_data['desone'] : ''; $desTwo = isset($request_data['destwo']) ? $request_data['destwo'] : ''; $lower_limit = !empty($request_data['lower_limit']) ? $request_data['lower_limit'] : -9999999; $announcement = isset($request_data['announcement']) ? $request_data['announcement'] : ''; /// 收款码 $collection_code = isset($request_data['collectioncode']) ? $request_data['collectioncode'] : ''; /// 最大房间数 $roomNum = intval($request_data['roomnum']); if (empty($agentID)) { $outParam->SetErrors(ERRORCODE_AGENTIDERROR, ERRORINFO_AGENTIDERROR); return false; } if (empty($channelID)) { $outParam->SetErrors(ERRORCODE_CHANNELIDERROR, ERRORINFO_CHANNELIDERROR); return false; } if (empty($playerID)) { $outParam->SetErrors(ERRORCODE_PLAYERIDERROR, ERRORINFO_PLAYERIDERROR); return false; } //玩家最大开房间数 if (!isset($request_data['roomnum'])) { $outParam->SetErrors(ERRORCODE_ROOMNUMNULLERROR, ERRORINFO_ROOMNUMNULLERROR); return false; } if ($roomNum < 0) { $outParam->SetErrors(ERRORCODE_ROOMNUMERROR, ERRORINFO_ROOMNUMERROR); return false; } if (strlen($desOne) > 500 || strlen($desTwo) > 500) { $outParam->SetErrors(ERRORCODE_SHORTDESERROR, ERRORINFO_SHORTDESERROR); return false; } $playerInfo = $this->PDO_Request(/** @lang */"select idx, play_openid, play_unionid from player where play_agentid=? and play_channelid=? and play_playerid=?;", $agentID, $channelID, $playerID); if (!is_array($playerInfo)) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } if (count($playerInfo) < 1) { $outParam->SetErrors(ERRORCODE_PLAYERNOTEXISTERROR, ERRORINFO_PLAYERNOTEXISTERROR); return false; } // //设置的短号 // if (!isset($request_data['shortnum'])) // { // $outParam->SetErrors(ERRORCODE_SHORTNUMNULLERROR, ERRORINFO_SHORTNUMNULLERROR); // return false; // } // $shortNum = intval($request_data['shortnum']); // // if ($shortNum <= 0 || $shortNum > 99999) // { // $outParam->SetErrors(ERRORCODE_SHORTNUMERROR, ERRORINFO_SHORTNUMERROR); // return false; // } // //判断短号是否被占用 // $shortInfo = $this->PDO_Request(/** @lang */ // " // SELECT id, player_id // FROM player_short_num // WHERE agent_id=? AND channel_id=? AND short_str=?;", $agentID, $channelID, $shortNum); // // if (!is_array($shortInfo)) // { // $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); // return false; // } // // if (count($shortInfo) > 0 && $shortInfo[0]['player_id'] != $playerID) // { // $outParam->SetErrors(ERRORCODE_SHORTNUMUSEDERROR, ERRORINFO_SHORTNUMUSEDERROR); // return false; // } /// 获取玩家是否设置过短号 $playerShortInfo = $this->PDO_Request(/** @lang */"select id, des_one, des_two, short_str from player_short_num where agent_id=? and channel_id=? and player_id=?;", $agentID, $channelID, $playerID); if (!is_array($playerShortInfo)) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } $this->PDO_BeginTransaction(); try { // 新建短号 if (count($playerShortInfo) < 1) { if(empty($shortNum)) { /// 随机生成短号码 do { $shortNum = rand(1, 99999); $cmd = /** @lang text */ 'select 1 from player_short_num where agent_id = ? and channel_id = ? and short_str = ?'; $ret = $this->pdo_request($cmd, $agentID, $channelID, $shortNum); if ( !$this->pdo_isdone()) throw new Exception($this->geterrorinfo(), $this->geterrorcode()); } while ( !empty($ret)); } else { // 指定短号 $cmd = /** @lang text */ 'select 1 from player_short_num where agent_id = ? and channel_id = ? and short_str = ?'; $ret = $this->pdo_request($cmd, $agentID, $channelID, $shortNum); if ( !$this->pdo_isdone()) throw new Exception($this->geterrorinfo(), $this->geterrorcode()); if(!empty($ret)) { throw new Exception('该短号已被使用', 200); } } $cmd = /** @lang text */<<PDO_Execute($cmd, $agentID, $channelID, $salesID, $playerID, $playerInfo[0]['play_openid'], $playerInfo[0]['play_unionid'], $shortNum, $roomNum, date('Y-m-d H:i:s', time()), $desOne, $desTwo, $lower_limit, $collection_code, $announcement); if (!$ret) { throw new Exception($this->GetErrorInfo(), $this->GetErrorCode()); } $strMark = '设置玩家短号和最大房间数'; } else { $shortNum = empty($shortNum) ? $playerShortInfo[0]['short_str'] : $shortNum; //$shortNum = $playerShortInfo[0]['short_str']; $arrayParam = array( $roomNum, date('Y-m-d H:i:s', time()), ); $shortDes = ''; if (isset($shortNum)) { $shortDes .= " , short_str=? "; $arrayParam[] = $shortNum; } if (isset($desOne)) { $shortDes .= " , des_one=? "; $arrayParam[] = $desOne; } if (isset($desTwo)) { $shortDes .= " , des_two=? "; $arrayParam[] = $desTwo; } if (isset($lower_limit)) { $shortDes .= " , lower_limit=? "; $arrayParam[] = $lower_limit; } if (isset($collection_code)) { $shortDes .= " , collection_code=? "; $arrayParam[] = $collection_code; } if (isset($announcement)) { $shortDes .= " , announcement=? "; $arrayParam[] = $announcement; } $arrayParam[] = $playerShortInfo[0]['id']; $ret = $this->PDO_Execute(/** @lang */" update player_short_num set max_room=?, change_time=? {$shortDes} where id=?;", $arrayParam); if (!$ret) throw new Exception($this->GetErrorInfo(), $this->GetErrorCode()); $strMark = '修改玩家短号和最大房间数'; } $operData = array( 'shortnum' => $shortNum, 'maxroomnum' => $roomNum, 'desone' => $desOne, 'destwo' => $desTwo, 'lower_limit' => $lower_limit, 'collectioncode' => $collection_code, 'announcement' => $announcement, ); //写入日志 $log_res = $this->PDO_Execute(/** @lang text */ ' insert into ct_user_process_log(from_agent, from_channel, from_user, to_agent, to_channel, to_user, oper_type, oper_data, remark, oper_time, is_process) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', $agentID, $channelID, $salesID, $agentID, $channelID, $playerID, 110, json_encode($operData, JSON_UNESCAPED_UNICODE), $strMark, time(), 0); if (!$log_res) { throw new Exception($this->GetErrorInfo(), $this->GetErrorCode()); } $this->PDO_Commit(); } catch (Exception $e) { $this->PDO_Rollback(); $outParam->SetErrors($e->getCode(), $e->getMessage()); return false; } return true; } /** * 查询玩家短号 * 被请求方法示例:参数固定为RequestParameter和ReturnParameter对象,返回值固定为true(成功)和false(失败) * @param RequestParameter $inParam * @param ReturnParameter $outParam * @return bool * method=agent.agent.getShortNum&format=json&charset=utf-8×tamp=1&version=1.0&biz_content={"agentid":"00bA05haB0d9ZC0fwGD09Q2OA30insbQ","channelid":"frdt0C1GG0t91P0McFo0rbA1he5yurbS","playerid":"100001"} */ public function getShortNum($inParam, $outParam) { $request_data = isset($inParam->biz_content) ? $inParam->biz_content : ''; if (!is_array($request_data)) { //参数格式错误 $outParam->SetErrors(ERRORCODE_INPARAMERROR, ERRORINFO_INPARAMERROR); return false; } $agentID = isset($request_data['agentid']) ? $request_data['agentid'] : ''; if (empty($agentID)) { $outParam->SetErrors(ERRORCODE_AGENTIDERROR, ERRORINFO_AGENTIDERROR); return false; } $channelID = isset($request_data['channelid']) ? $request_data['channelid'] : ''; if (empty($channelID)) { $outParam->SetErrors(ERRORCODE_CHANNELIDERROR, ERRORINFO_CHANNELIDERROR); return false; } //操作人id //$salesID = isset($request_data['salesid']) ? $request_data['salesid'] : ''; //玩家id $playerID = isset($request_data['playerid']) ? $request_data['playerid'] : ''; if (empty($playerID)) { $outParam->SetErrors(ERRORCODE_PLAYERIDERROR, ERRORINFO_PLAYERIDERROR); return false; } // 是否需要大赢家的信息 0-否 1-是 $is_winner = isset($request_data['is_winner']) ? intval($request_data['is_winner']) : 0; $start_time = isset($request_data['starttime']) ? $request_data['starttime'] : ''; $end_time = isset($request_data['endtime']) ? $request_data['endtime'] : ''; $playerShortInfo = $this->PDO_Request(/** @lang */ " select id, open_id, union_id, short_str, max_room, des_one, des_two, collection_code, lower_limit, announcement from player_short_num where agent_id=? and channel_id=? and player_id=?;", $agentID, $channelID, $playerID); if (!is_array($playerShortInfo)) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } if (count($playerShortInfo) < 1) { $outParam->biz_content = array(); return true; } $outParam->biz_content = $playerShortInfo[0]; if($is_winner) { // 获取昨日房间内玩家赢得大赢家的次数 if(empty($start_time) || empty($end_time)) { $tmp_time = strtotime("-1 day"); $year_month = date("Ym", $tmp_time); $start_day = date("Y-m-d", $tmp_time); $end_day = date("Y-m-d", $tmp_time); } else { $year_month = substr($start_time,0, 7); $year_month = str_replace('-', '', $year_month); $start_day = $start_time; $end_day = $end_time; } $sql = /** @lang */<<PDO_Request($sql, $agentID, $playerShortInfo[0]['short_str']); if(isset($winner_info[0])) $outParam->biz_content['winner_info'] = $winner_info; } return true; } /** * 总代查询指定时间注册代理信息 * 被请求方法示例:参数固定为RequestParameter和ReturnParameter对象,返回值固定为true(成功)和false(失败) * @param RequestParameter $inParam * @param ReturnParameter $outParam * @return bool * method=agent.agent.getShortNum&format=json&charset=utf-8×tamp=1&version=1.0&biz_content={"agentid":"00bA05haB0d9ZC0fwGD09Q2OA30insbQ","channelid":"frdt0C1GG0t91P0McFo0rbA1he5yurbS","playerid":"100001"} */ public function timeReg($inParam, $outParam) { $request_data = isset($inParam->biz_content) ? $inParam->biz_content : ''; if (!is_array($request_data)) { //参数格式错误 $outParam->SetErrors(ERRORCODE_INPARAMERROR, ERRORINFO_INPARAMERROR); return false; } $agentID = isset($request_data['agentid']) ? $request_data['agentid'] : ''; if (empty($agentID)) { $outParam->SetErrors(ERRORCODE_AGENTIDERROR, ERRORINFO_AGENTIDERROR); return false; } $channelID = isset($request_data['channelid']) ? $request_data['channelid'] : ''; if (empty($channelID)) { $outParam->SetErrors(ERRORCODE_CHANNELIDERROR, ERRORINFO_CHANNELIDERROR); return false; } //操作人id $salesID = isset($request_data['salesid']) ? $request_data['salesid'] : ''; if (empty($salesID)) { $outParam->SetErrors(ERRORCODE_SALESIDERROR, ERRORINFO_SALESIDERROR); return false; } //判断操作人是否是总代身份 //只有总代理才有权限 $dbSalesInfo = $this->PDO_Request(/** @lang */ ' SELECT idx, global_power FROM sales_user WHERE saus_agentid=? AND saus_channelid=? AND saus_salesid=?', $agentID, $channelID, $salesID); if (!is_array($dbSalesInfo)) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } if (count($dbSalesInfo) < 1) { $outParam->SetErrors(ERRORCODE_SALESNOTEXISTERROR, ERRORINFO_SALESNOTEXISTERROR); return false; } //不是总代理,没有权限 if (intval($dbSalesInfo[0]['global_power']) != 1) { $outParam->SetErrors(ERRORCODE_NOPOWERERROR, ERRORINFO_NOPOWERERROR); return false; } $page_count = 1; $str_time = ''; //$array_param = array($agentID, $queryID, $channelID); $beginTime = isset($request_data['begintime']) ? $request_data['begintime'] : ''; $endTime = isset($request_data['endtime']) ? $request_data['endtime'] : ''; if (empty($beginTime) || empty($endTime)) { $outParam->SetErrors(ERRORCODE_TIMEERROR, ERRORINFO_TIMEERROR); return false; } $page_index = empty($request_data['page_index']) ? 1 : intval($request_data['page_index']); $page_size = empty($request_data['page_size']) ? 10 : intval($request_data['page_size']); $start = ($page_index - 1) * $page_size; $strPage = ''; if (!empty($request_data['page_index'])) { $strPage .= " LIMIT {$start},{$page_size} "; } $array_param = array( $agentID, $channelID, ); if (!empty($beginTime) && !empty($endTime)) { $str_time .= ' and date_format(saus_saletime, \'%Y-%m-%d\') between ? and ?'; $array_param[] = $beginTime; $array_param[] = $endTime; } if (!empty($beginTime) && !empty($endTime) && $beginTime > $endTime) { $outParam->SetErrors(ERRORCODE_TIMEERROR, ERRORINFO_TIMEERROR); return false; } $timeRegSales = $this->PDO_Request(/** @lang */ " select idx, saus_nickname, saus_avatar, saus_sex, saus_salesid, saus_roomcard, saus_bean, saus_saletime, saus_tel, saus_wechat, saus_parentid, saus_invitecode, saus_power, saus_status from sales_user where saus_agentid=? and saus_channelid=? {$str_time} order by idx desc {$strPage}", $array_param); if (!is_array($timeRegSales)) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } if (!empty($request_data['page_index'])) { $dbCount = $this->PDO_Request(/** @lang */ " select count(1) num from sales_user where saus_agentid=? and saus_channelid=? {$str_time}", $array_param); if (!is_array($dbCount) || count($dbCount) < 1) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } $page_count = intval($dbCount[0]['num']) / $page_size + 1; } $outParam->biz_content = array( 'record' => $timeRegSales, 'page_index' => $page_index, 'page_size' => $page_size, 'page_count' => intval($page_count), ); return true; } /** * 总代查询指定时间所有代理的下的玩家购买房卡、星星金额和数量 * 被请求方法示例:参数固定为RequestParameter和ReturnParameter对象,返回值固定为true(成功)和false(失败) * @param RequestParameter $inParam * @param ReturnParameter $outParam * @return bool * method=agent.agent.allSalesReport&format=json&charset=utf-8×tamp=1&version=1.0&biz_content={"agentid":"00bA05haB0d9ZC0fwGD09Q2OA30insbQ","channelid":"frdt0C1GG0t91P0McFo0rbA1he5yurbS","salesid":"200001","type":0,"begintime":"2017-08-01","endtime":"2017-10-01","page_index":1} */ public function allSalesReport($inParam, $outParam) { $request_data = isset($inParam->biz_content) ? $inParam->biz_content : ''; if (!is_array($request_data)) { //参数格式错误 $outParam->SetErrors(ERRORCODE_INPARAMERROR, ERRORINFO_INPARAMERROR); return false; } $agentID = isset($request_data['agentid']) ? $request_data['agentid'] : ''; if (empty($agentID)) { $outParam->SetErrors(ERRORCODE_AGENTIDERROR, ERRORINFO_AGENTIDERROR); return false; } $channelID = isset($request_data['channelid']) ? $request_data['channelid'] : ''; if (empty($channelID)) { $outParam->SetErrors(ERRORCODE_CHANNELIDERROR, ERRORINFO_CHANNELIDERROR); return false; } //操作人id $salesID = isset($request_data['salesid']) ? $request_data['salesid'] : ''; if (empty($salesID)) { $outParam->SetErrors(ERRORCODE_SALESIDERROR, ERRORINFO_SALESIDERROR); return false; } //查询人id $queryID = isset($request_data['queryid']) ? $request_data['queryid'] : ''; //操作类型 type, 0、购买房卡数,1、购买房卡金额,2、购买星星数,3、购买星星金额 $type = isset($request_data['type']) ? intval($request_data['type']) : 0; switch ($type) { case 0: // $selType = 107; break; case 1: $selType = 108; break; case 2: $selType = 109; break; case 3: $selType = 110; break; default: $selType = 107; break; } //判断操作人是否是总代身份 //只有总代理才有权限 $dbSalesInfo = $this->PDO_Request(/** @lang text */'select idx, global_power from sales_user where saus_agentid=? and saus_channelid=? and saus_salesid=?', $agentID, $channelID, $salesID); if (!is_array($dbSalesInfo)) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } if (count($dbSalesInfo) < 1) { $outParam->SetErrors(ERRORCODE_SALESNOTEXISTERROR, ERRORINFO_SALESNOTEXISTERROR); return false; } //不是总代理,没有权限 if (intval($dbSalesInfo[0]['global_power']) != 1) { $outParam->SetErrors(ERRORCODE_NOPOWERERROR, ERRORINFO_NOPOWERERROR); return false; } $page_count = 1; $str_time = ''; //$array_param = array($agentID, $queryID, $channelID); $beginTime = isset($request_data['begintime']) ? $request_data['begintime'] : ''; $endTime = isset($request_data['endtime']) ? $request_data['endtime'] : ''; $page_index = empty($request_data['page_index']) ? 1 : intval($request_data['page_index']); $page_size = empty($request_data['page_size']) ? 10 : intval($request_data['page_size']); $start = ($page_index - 1) * $page_size; $strPage = ''; if (!empty($request_data['page_index'])) { $strPage .= " LIMIT {$start},{$page_size} "; } $array_param = array( $agentID, $channelID, $selType, ); if (!empty($beginTime)) { $str_time .= ' and a.report_date >= ? '; $array_param[] = $beginTime; } if (!empty($endTime)) { $str_time .= ' and a.report_date <= ? '; $array_param[] = $endTime; } if ($queryID !== '') { $str_time .= ' and a.sales_id = ? '; $array_param[] = $queryID; } if (!empty($beginTime) && !empty($endTime) && $beginTime > $endTime) { $outParam->SetErrors(ERRORCODE_TIMEERROR, ERRORINFO_TIMEERROR); return false; } $dbData = $this->PDO_Request(/** @lang */ " SELECT a.id, a.sales_id, a.report_id, SUM(report_data) num, report_date, b.saus_nickname, b.saus_avatar FROM ct_report_info a LEFT JOIN sales_user b ON a.agent_id=b.saus_agentid AND a.channel_id=b.saus_channelid AND a.sales_id=b.saus_salesid WHERE a.agent_id=? AND a.channel_id=? AND a.report_id=? {$str_time} GROUP BY a.sales_id ORDER BY a.id {$strPage};", $array_param); if (!is_array($dbData)) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } if (!empty($request_data['page_index'])) { $dbCount = $this->PDO_Request(/** @lang */ " SELECT count(DISTINCT a.sales_id) num FROM ct_report_info a WHERE a.agent_id=? AND a.channel_id=? AND a.report_id=? {$str_time}", $array_param); if (!is_array($dbCount) || count($dbCount) < 1) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } $page_count = intval($dbCount[0]['num']) / $page_size + 1; } $outParam->biz_content = array( 'record' => $dbData, 'page_index' => $page_index, 'page_size' => $page_size, 'page_count' => intval($page_count), ); return true; } /** * 获取公告信息 * 被请求方法示例:参数固定为RequestParameter和ReturnParameter对象,返回值固定为true(成功)和false(失败) * @param RequestParameter $inParam * @param ReturnParameter $outParam * @return bool * */ public function getNotice($inParam, $outParam) { $request_data = isset($inParam->biz_content) ? $inParam->biz_content : ''; if (!is_array($request_data)) { //参数格式错误 $outParam->SetErrors(ERRORCODE_INPARAMERROR, ERRORINFO_INPARAMERROR); return false; } if (!isset($request_data['type'])) { $outParam->SetErrors(ERRORCODE_TYPEERROR, ERRORINFO_TYPEERROR); return false; } //0、渠道下的公告,1、全服公告, 2,本渠道和全服公告 $type = isset($request_data['type']) ? intval($request_data['type']) : 0; $strSql = ''; $arraySql = array(); if ($type == 0) { $agentID = isset($request_data['agentid']) ? $request_data['agentid'] : ''; if (empty($agentID)) { $outParam->SetErrors(ERRORCODE_AGENTIDERROR, ERRORINFO_AGENTIDERROR); return false; } $channelID = isset($request_data['channelid']) ? $request_data['channelid'] : ''; if (empty($channelID)) { $outParam->SetErrors(ERRORCODE_CHANNELIDERROR, ERRORINFO_CHANNELIDERROR); return false; } $strSql .= ' AND agent_id=? AND channel_id=? '; $arraySql[] = $agentID; $arraySql[] = $channelID; $noticeList = $this->PDO_Request(/** @lang */ " SELECT id, notice_info, create_time FROM ct_agent_notice WHERE status=1 AND global_notice=0 {$strSql}", $arraySql); if (!is_array($noticeList)) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } $outParam->biz_content = array('list' => $noticeList); } else if ($type == 1) { $noticeList = $this->PDO_Request(/** @lang */ " SELECT id, notice_info, create_time FROM ct_agent_notice WHERE status=1 AND global_notice=1;"); if (!is_array($noticeList)) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } $outParam->biz_content = array('list' => $noticeList); } else { $agentID = isset($request_data['agentid']) ? $request_data['agentid'] : ''; if (empty($agentID)) { $outParam->SetErrors(ERRORCODE_AGENTIDERROR, ERRORINFO_AGENTIDERROR); return false; } $channelID = isset($request_data['channelid']) ? $request_data['channelid'] : ''; if (empty($channelID)) { $outParam->SetErrors(ERRORCODE_CHANNELIDERROR, ERRORINFO_CHANNELIDERROR); return false; } $globalNotice = $this->PDO_Request(/** @lang */ " SELECT notice_info FROM ct_agent_notice WHERE status=1 AND global_notice=1 and type=0;"); if (!is_array($globalNotice)) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } if (!empty($globalNotice)) { $outParam->biz_content = $globalNotice[0]; return true; } $strSql .= ' AND agent_id=? AND channel_id=? '; $arraySql[] = $agentID; $arraySql[] = $channelID; $notice = $this->PDO_Request(/** @lang */ " SELECT notice_info FROM ct_agent_notice WHERE status=1 AND global_notice=0 and type=0 {$strSql};", $arraySql); if (!is_array($notice)) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } $outParam->biz_content = (isset($notice[0]) ? $notice[0] : array('notice_info' => '')); } return true; } /****************************************************************************************** * ================== summer 2017/11/6 Handel 代理分成部分业务 ====================== * *****************************************************************************************/ ##------------ 订单操作[curd] ##------------[表:ct_withdraw_record] -------------------------> /** * [增]新增绑定玩家 * author summer * @param RequestParameter $inParam * @param ReturnParameter $outParam * @return bool */ public function addAgentPlayer($inParam, $outParam) { // 1、系统非空数据配置初始化 $config = array( # 代理商id 'agentID' => array( 'name' => 'agentid', 'errcode' => ERRORCODE_AGENTIDERROR, 'errinfo' => ERRORINFO_AGENTIDERROR, ), # 渠道商id 'channelID' => array( 'name' => 'channelid', 'errcode' => ERRORCODE_CHANNELIDERROR, 'errinfo' => ERRORINFO_CHANNELIDERROR, ), # 个人代理id 'salesID' => array( 'name' => 'salesid', 'errcode' => ERRORCODE_SALESIDERROR, 'errinfo' => ERRORINFO_SALESIDERROR, ), # 新增玩家id 'playerid' => array( 'name' => 'playerid', 'errcode' => ERRORCODE_INPARAMERROR, 'errinfo' => ERRORINFO_INPARAMERROR, ), ); // 2、数据处理后的结果集 异常标志err:true false $param = $this->inParamHandel($inParam, $outParam, $config); if (!$param) { return false; } $res = $this->PDO_Execute(/** @lang text */'insert into ct_sales_player(agent_id, channel_id, saus_salesid, play_playerid, create_time) values (?, ?, ?, ?, ?)', $param['agentID'], $param['channelID'], $param['salesID'], $param['playerid'], date('Y-m-d H:i:s', time())); if (!$res) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } // 5、数据返回部分 $outParam->biz_content = array( 'code' => 1, 'msg' => '提交成功', ); return true; } /** * [查]查询绑定玩家 * author summer * @param RequestParameter $inParam * @param ReturnParameter $outParam * @return bool */ public function getAgentPlayer($inParam, $outParam) { // 1、系统非空数据配置初始化 $config = array( # 代理商id 'agentID' => array( 'name' => 'agentid', 'errcode' => ERRORCODE_AGENTIDERROR, 'errinfo' => ERRORINFO_AGENTIDERROR, ), # 渠道商id 'channelID' => array( 'name' => 'channelid', 'errcode' => ERRORCODE_CHANNELIDERROR, 'errinfo' => ERRORINFO_CHANNELIDERROR, ), # 个人代理id 'salesID' => array( 'name' => 'salesid', 'errcode' => ERRORCODE_SALESIDERROR, 'errinfo' => ERRORINFO_SALESIDERROR, ), ); // 2、数据处理后的结果集 异常标志err:true false $param = $this->inParamHandel($inParam, $outParam, $config); if (!$param) { return false; } $items = $this->PDO_Request(/** @lang text */' select a.`id`, a.`saus_salesid`, a.`play_playerid`, b.play_nickname from `ct_sales_player` as a left join `player` as b on a.`play_playerid` = b.`play_playerid` and a.`agent_id` = b.`play_agentid` and a.`channel_id` = b.`play_channelid` where a.`agent_id` = ? and a.`channel_id` = ? and a.`saus_salesid` = ?;', $param['agentID'], $param['channelID'], $param['salesID']); if (!is_array($items)) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } // 5、数据返回部分 $outParam->biz_content = $items; return true; } /** * [查]删除绑定玩家 * author summer * @param RequestParameter $inParam * @param ReturnParameter $outParam * @return bool */ public function delAgentPlayer($inParam, $outParam) { // 1、系统非空数据配置初始化 $config = array( # 代理商id 'agentID' => array( 'name' => 'agentid', 'errcode' => ERRORCODE_AGENTIDERROR, 'errinfo' => ERRORINFO_AGENTIDERROR, ), # 渠道商id 'channelID' => array( 'name' => 'channelid', 'errcode' => ERRORCODE_CHANNELIDERROR, 'errinfo' => ERRORINFO_CHANNELIDERROR, ), # 记录id 'id' => array( 'name' => 'id', 'errcode' => ERRORCODE_SALESIDERROR, 'errinfo' => ERRORINFO_SALESIDERROR, ), ); // 2、数据处理后的结果集 异常标志err:true false $param = $this->inParamHandel($inParam, $outParam, $config); if (!$param) { return false; } $items = $this->PDO_Request(/** @lang text */'delete from ct_sales_player where id= ?;', $param['id']); if (!is_array($items)) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } // 5、数据返回部分 $outParam->biz_content = '删除成功'; return true; } ##------------ 用户账户操作[curd] 总代权限 ##------------[表:sales_user] ---------------------------------> /** * [查]查询用户账户 * author summer * @param RequestParameter $inParam * @param ReturnParameter $outParam * @return bool */ public function getSalesUser($inParam, $outParam) { // 1、系统非空数据配置初始化 $config = array( # 代理商id 'agentID' => array( 'name' => 'agentid', 'errcode' => ERRORCODE_AGENTIDERROR, 'errinfo' => ERRORINFO_AGENTIDERROR, ), # 渠道商id 'channelID' => array( 'name' => 'channelid', 'errcode' => ERRORCODE_CHANNELIDERROR, 'errinfo' => ERRORINFO_CHANNELIDERROR, ), # 个人代理id 'salesID' => array( 'name' => 'salesid', 'errcode' => ERRORCODE_SALESIDERROR, 'errinfo' => ERRORINFO_SALESIDERROR, ), ); // 2、数据处理后的结果集 异常标志err:true false $param = $this->inParamHandel($inParam, $outParam, $config); if (!$param) { return false; } // 3、权限验证 $auth = $this->checkAgentAuth($inParam, $outParam, $param['agentID'], $param['channelID'], $param['salesID']); if (!$auth) { return false; } //3.1 可选参数获取 $type = empty($param['_params']['type']) ? 1 : 0; // 查询类型(1、代理 0、玩家) $objuserid = empty($param['_params']['objuserid']) ? false : $param['_params']['objuserid']; // 指定查询代理/玩家id $beginTime = empty($param['_params']['begintime']) ? false : $param['_params']['begintime']; // 查询开始时间 $endTime = empty($param['_params']['endtime']) ? false : $param['_params']['endtime']; // 查询结束时间 # 分页信息 $page_index = empty($param['_params']['page_index']) ? 1 : intval($param['_params']['page_index']); // 当前页 $page_size = empty($param['_params']['page_size']) ? 10: intval($param['_params']['page_size']); // 单页容量 $start = ($page_index - 1) * $page_size; $strPage = ''; if (!empty($page_index)) { $strPage .= " LIMIT {$start},{$page_size} "; } if ($beginTime) { $where_begin = ' AND saus_saletime >= "'.$beginTime.'"'; }else{ $where_begin = ''; } if ($endTime) { $where_end = ' AND saus_saletime <= "'.$endTime.'"'; }else{ $where_end = ''; } // 预留 // if ($objuserid) { // $where_objuserid = ' AND sales_id = '.$objuserid; // } $items = $this->PDO_Request(/** @lang text */" select saus_salesid, saus_avatar, saus_nickname, saus_firsttime, currency_withdraw, saus_status, currency_freeze, idx from sales_user where saus_agentid = ? and saus_channelid = ? and saus_salesman = ?{$where_begin}{$where_end} order by saus_saletime desc {$strPage}", $param['agentID'], $param['channelID'], 1); if (!is_array($items)) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } # 分页计算 $page_count = 1; if (!empty($request_data['page_index'])) { $dbData = $this->PDO_Request(/** @lang text */" select count(1) num from sales_user where saus_agentid = ? and saus_channelid = ? and saus_salesman = ?{$where_begin}{$where_end} order by saus_saletime desc {$strPage};", $param['agentID'], $param['channelID'], 1); if (!is_array($dbData) || count($dbData) < 1) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } $page_count = intval($dbData[0]['num']) / $page_size + 1; // 总页数 } // 5、数据返回部分 $outParam->biz_content = array( 'data' => $items, 'page_index' => $page_index, 'page_size' => $page_size, 'page_count' => intval($page_count), ); return true; } /** * [改]修改用户账户 * author summer * @param RequestParameter $inParam * @param ReturnParameter $outParam * @return bool */ public function editSalesUser($inParam, $outParam) { $config = array( # 代理商id 'agentID' => array( 'name' => 'agentid', 'errcode' => ERRORCODE_AGENTIDERROR, 'errinfo' => ERRORINFO_AGENTIDERROR, ), # 渠道商id 'channelID' => array( 'name' => 'channelid', 'errcode' => ERRORCODE_CHANNELIDERROR, 'errinfo' => ERRORINFO_CHANNELIDERROR, ), # 个人代理id 'salesID' => array( 'name' => 'salesid', 'errcode' => ERRORCODE_SALESIDERROR, 'errinfo' => ERRORINFO_SALESIDERROR, ), # 操作记录id 'id' => array( 'name' => 'id', 'errcode' => 'H00001', 'errinfo' => 'id不能为空', ), ); // 2、数据处理后的结果集 异常标志err:true false $param = $this->inParamHandel($inParam, $outParam, $config); if (!$param) { return false; } // 3、权限验证 $auth = $this->checkAgentAuth($inParam, $outParam, $param['agentID'], $param['channelID'], $param['salesID']); if (!$auth) { return false; } // 4、业务逻辑部分 #a.查看分类是否存在 $item = $this->PDO_Request(/** @lang text */'select * from sales_user where idx = ?; ', $param['id']); if (!$item) { $outParam->SetErrors(ERRORCODE_COMMISSIONNOTEXISTERROR, ERRORINFO_COMMISSIONNOTEXISTERROR); return false; } #b.传了几个改几个,没有传用默认 // $saus_nickname = isset($param['_params']['saus_nickname']) ? $param['_params']['saus_nickname'] : $item[0]['saus_nickname']; // 昵称 // $saus_wechat = isset($param['_params']['saus_wechat']) ? $param['_params']['saus_wechat'] : $item[0]['saus_wechat']; // 微信 // $saus_tel = isset($param['_params']['saus_tel']) ? $param['_params']['saus_tel'] : $item[0]['saus_tel']; // 电话 $currency_freeze = isset($param['_params']['currency_freeze']) ? $param['_params']['currency_freeze'] : $item[0]['currency_freeze']; // 冻结金额 $this->PDO_Execute(/** @lang text */'update sales_user set currency_freeze = ? where idx = ?', $currency_freeze, $param['id']); if (!$this->PDO_IsDone()) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } return true; } ##------------ 工具方法[curd] ##------------[summer 2017/11/6 Handel] -----------------------> /** * 输入参数标准化处理 * @param RequestParameter $inParam * @param ReturnParameter $outParam * @param array $config 待处理变量配置文件 * @return array * * author:summer 2017/11/6 */ public function inParamHandel($inParam, $outParam, $config) { $data = []; foreach ($config as $k => $v) { // 1、全局校验 $data['_params'] = $request_data = isset($inParam->biz_content) ? $inParam->biz_content : ''; if (!is_array($request_data)) { $outParam->SetErrors(ERRORCODE_INPARAMERROR, ERRORINFO_INPARAMERROR); return false; } // 2、单元校验 $data[$k] = isset($request_data[$v['name']]) ? $request_data[$v['name']] : ''; if (empty($data[$k])) { $outParam->SetErrors($v['errcode'], $v['errinfo']); return false; } } // 3、返回处理后的数据 return $data; } /** * 代理权限认证 * @param RequestParameter $inParam * @param ReturnParameter $outParam * @param string $agentID 代理商id * @param string $channelID 渠道商id * @param int $salesID 代理人id * * @return array * * author:summer 2017/11/6 */ public function checkAgentAuth($inParam, $outParam, $agentID, $channelID, $salesID) { //只有总代理才有权限 $dbSalesInfo = $this->PDO_Request(/** @lang text */'select idx, global_power from sales_user where saus_agentid=? and saus_channelid=? and saus_salesid=?', $agentID, $channelID, $salesID); if (!is_array($dbSalesInfo)) { $outParam->SetErrors($this->GetErrorCode(), $this->GetErrorInfo()); return false; } // 代理不存在 if (count($dbSalesInfo) < 1) { $outParam->SetErrors(ERRORCODE_SALESNOTEXISTERROR, ERRORINFO_SALESNOTEXISTERROR); return false; } // 不是总代理,没有权限 if (intval($dbSalesInfo[0]['global_power']) != 1) { $outParam->SetErrors(ERRORCODE_NOPOWERERROR, ERRORINFO_NOPOWERERROR); return false; } return true; } }