123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198 |
- <?php
- /**
- * CpController.php UTF-8
- * CP玩家校验
- *
- * @date : 2018/10/13 17:52
- *
- * @license 这不是一个自由软件,未经授权不许任何使用和传播。
- * @author : wuyonghong <wyh@huosdk.com>
- * @version : HuoMp 1.0
- */
- namespace mini\sdk\controller;
- use huo\controller\common\HuoSession;
- use huo\controller\game\Game;
- use huo\controller\member\Role;
- use huo\model\log\MemRoleLogModel;
- use think\Controller;
- class CpRoleController extends Controller {
- private $mg_mem_id;
- private $mem_id;
- private $app_id;
- private $event;
- private $server_id;
- private $server_name;
- private $role_id;
- private $role_name;
- private $role_level;
- private $role_vip;
- private $sign;
- private $app_key;
- private $combat_num;
- function _initialize() {
- parent::_initialize();
- }
- private function cpReturn($status = '0', $msg = '请求参数错误') {
- $_rdata = array(
- 'status' => $status,
- 'msg' => $msg
- );
- echo json_encode($_rdata);
- exit;
- }
- /**
- * CP游戏角色信息上报
- * http://doc.1tsdk.com/160?page_id=4831
- * 【域名】/cp/role/report
- *
- */
- public function report() {
- /* 1 查询是否具有访问权限 */
- $_rs = $this->checkAuth();
- if (false == $_rs) {
- $this->cpReturn('100', '没有接口访问权限');
- }
- $_url_data = $this->request->param();
- $this->app_id = get_val($_url_data, 'app_id');
- $this->mg_mem_id = get_val($_url_data, 'mem_id');
- $this->event = get_val($_url_data, 'event');
- $this->server_id = get_val($_url_data, 'server_id');
- $this->server_name = get_val($_url_data, 'server_name');
- $this->role_id = get_val($_url_data, 'role_id');
- $this->role_name = get_val($_url_data, 'role_name');
- $this->role_level = get_val($_url_data, 'role_level');
- $this->combat_num = get_val($_url_data, 'combat_num');
- $this->role_vip = get_val($_url_data, 'role_vip');
- $this->sign = get_val($_url_data, 'sign');
- /* 0 检查参数 */
- $this->checkParam();
- /* 11 校验APPID */
- $this->checkAppid();
- /* 15 校验玩家 */
- $this->checkUser();
- /* 12 校验签名 */
- $this->verifySign();
- /* 16 检查访问次数 */
- $this->checkCnt();
- $_rs = $this->insertData();
- if (false !== $_rs) {
- $this->cpReturn('1', '上报成功');
- }
- }
- public function insertData() {
- $_role_class = new Role();
- $_role_model = new MemRoleLogModel();
- $_data['app_id'] = $this->app_id;
- $_data['mg_mem_id'] = $this->mg_mem_id;
- $_data['server_id'] = $this->server_id;
- $_data['server_name'] = $this->server_name;
- $_data['role_id'] = $this->role_id;
- $_data['role_name'] = $this->role_name;
- $_data['role_level'] = $this->role_level;
- $_data['role_vip'] = $this->role_vip;
- $_data['combat_num'] = $this->combat_num;
- $_data['money'] = 0;
- $_data['last_login_time'] = time();
- $_data['create_time'] = time();
- $_role_model->insertLog($_data);
- $_role_class->updateData($_data);
- }
- /**
- * @return bool
- */
- private function checkAppid() {
- $_app_key = (new Game())->getAppKey($this->app_id);
- if (empty($_app_key)) {
- $this->cpReturn('11', '游戏ID(app_id)错误');
- }
- $this->app_key = $_app_key;
- return true;
- }
- /**
- * @return bool
- */
- private function checkUser() {
- $_mg_mem_id = (new HuoSession($this->mem_id, $this->app_id))->getMgMemId();
- if ($_mg_mem_id != $this->mg_mem_id) {
- $this->cpReturn('15', '玩家未登陆');
- }
- return true;
- }
- /**
- * 1 校验参数
- */
- private function checkParam() {
- if (empty($this->app_id) || $this->app_id < 0) {
- $this->cpReturn('0', '请求参数为空 app_id');
- }
- if (empty($this->mg_mem_id) || $this->mg_mem_id < 0) {
- $this->cpReturn('0', '请求参数为空 mem_id');
- }
- if (empty($this->sign)) {
- $this->cpReturn('0', '请求参数为空 sign');
- }
- if (empty($this->event) || $this->event < 0) {
- $this->cpReturn('0', '请求参数错误 event');
- }
- }
- /**
- * 校验权限
- *
- * @return bool
- */
- private function checkAuth() {
- // $this->cpReturn('100','没有接口访问权限');
- return true;
- }
- /**
- * 检查次数
- *
- * @return bool
- */
- private function checkCnt() {
- // $this->cpReturn('16','访问太频繁,超过访问次数');
- $_cnt = HuoSession::getCpReleReportCnt($this->mg_mem_id);
- if (empty($_cnt)) {
- $_cnt = 0;
- }
- $_cnt++;
- HuoSession::setCpReleReportCnt($this->mg_mem_id, $_cnt);
- return true;
- }
- /*12 校验签名 */
- private function verifySign() {
- $_signstr = "app_id=".$this->app_id.
- "&combat_num=".$this->combat_num.
- "&event=".$this->event.
- "&mem_id=".$this->mg_mem_id.
- "&role_id=".$this->role_id.
- "&role_name=".$this->role_name.
- "&role_level=".$this->role_level.
- "&role_vip=".$this->role_vip.
- "&server_id=".$this->server_id.
- "&server_name=".$this->server_name.
- "&app_key=".$this->app_key;
- $_verify_sign = md5($_signstr);
- if ($this->sign != $_verify_sign) {
- $this->cpReturn('12', '签名校验不通过');
- }
- return true;
- }
- }
|