123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270 |
- <?php
- /**
- * Sdk.php UTF-8
- * Sdk队列消费
- *
- * @date : 2018/5/30 16:28
- *
- * @license 这不是一个自由软件,未经授权不许任何使用和传播。
- * @author : wuyonghong <wyh@huosdk.com>
- * @version : HUOSDK 8.0
- */
- namespace huolib\queue\job;
- use huolib\queue\constant\EventConst;
- use huolib\queue\controller\sdk\App;
- use huolib\queue\controller\sdk\Mem as MemCon;
- use huolib\queue\controller\sdk\Order as OrderCon;
- use huolib\queue\controller\sdk\Role as RoleCon;
- use huolib\queue\request\Channel;
- use huolib\queue\request\Common;
- use huolib\queue\request\Crash;
- use huolib\queue\request\Device;
- use huolib\queue\request\Game;
- use huolib\queue\request\Mem;
- use huolib\queue\request\Order;
- use huolib\queue\request\Role;
- use think\queue\Job;
- class SdkFire extends Fire {
- static $g_i = 0;
- /**
- * fire方法是消息队列默认调用的方法
- *
- * @param Job $job 当前的任务对象
- * @param array|mixed $data 发布任务时自定义的数据
- */
- public function fire(Job $job, $data) {
- self::$g_i++;
- $_is_job_done = $this->doJob($data);
- $runtime = round(microtime(true) - THINK_START_TIME, 10);
- // echo $runtime.' '.self::$g_i;
- if ($_is_job_done) {
- //如果任务执行成功, 记得删除任务
- $job->delete();
- // print("<info>Hello Job has been done and deleted"."</info>\n");
- } else {
- if ($job->attempts() > 3) {
- //通过这个方法可以检查这个任务已经重试了几次了
- // print("<warn>Hello Job has been retried more than 3 times!"."</warn>\n");
- $job->delete();
- // 也可以重新发布这个任务
- // print("<info>Hello Job will be availabe again after 2s."."</info>\n");
- //$job->release(2); //$delay为延迟时间,表示该任务延迟2秒后再执行
- }
- }
- }
- /**
- * 根据消息中的数据进行实际的业务处理
- *
- * @param array $data 发布任务时自定义的数据
- *
- * @return bool 任务执行的结果
- */
- public function doJob($data) {
- // try {
- $_com_rq = $this->setCommonData($data);
- $_channel_rq = $this->setChannelData($data);
- $_device_rq = $this->setDeviceData($data);
- $_game_rq = $this->setGameData($data);
- $_mem_rq = $this->setMemData($data);
- $_order_rq = $this->setOrderData($data);
- $_role_rq = $this->setRoleData($data);
- $_crash_rq = $this->setCrashData($data);
- switch ($_com_rq->getEvent()) {
- case EventConst::EVENT_APP_ACTIVATION:
- /* APP激活 */
- $_rs = (new App())->activation($_com_rq, $_device_rq, $_game_rq, $_channel_rq);
- break;
- case EventConst::EVENT_APP_STARTUP:
- /* APP启动 */
- $_rs = (new App())->startup($_com_rq, $_device_rq, $_game_rq, $_channel_rq);
- break;
- case EventConst::EVENT_APP_CRASH:
- /* APP崩溃 */
- $_rs = (new App())->crash($_com_rq, $_device_rq, $_game_rq, $_channel_rq, $_crash_rq);
- break;
- case EventConst::EVENT_APP_HEARTBEAT:
- /* APP心跳 */
- $_rs = (new App())->heartbeat($_com_rq, $_device_rq, $_game_rq, $_channel_rq);
- break;
- case EventConst::EVENT_MEM_REG:
- /* 玩家创建 */
- $_rs = (new MemCon())->create($_com_rq, $_device_rq, $_game_rq, $_channel_rq, $_mem_rq);
- break;
- case EventConst::EVENT_MEM_LOGIN:
- $_rs = (new MemCon())->online($_com_rq, $_device_rq, $_game_rq, $_channel_rq, $_mem_rq);
- break;
- case EventConst::EVENT_MEM_LOGOUT:
- /* 玩家登出 */
- $_rs = (new MemCon())->offline($_com_rq, $_device_rq, $_game_rq, $_channel_rq, $_mem_rq);
- break;
- case EventConst::EVENT_ROLE_CREATE:
- /* 角色创建 */
- $_rs = (new RoleCon())->create($_com_rq, $_device_rq, $_game_rq, $_channel_rq, $_mem_rq, $_role_rq);
- break;
- case EventConst::EVENT_ROLE_ONLINE:
- /* 角色登陆 */
- $_rs = (new RoleCon())->online($_com_rq, $_device_rq, $_game_rq, $_channel_rq, $_mem_rq, $_role_rq);
- break;
- case EventConst::EVENT_ROLE_LEVELUP:
- /* 角色升级 */
- $_rs = (new RoleCon())->levelup(
- $_com_rq, $_device_rq, $_game_rq, $_channel_rq, $_mem_rq, $_role_rq
- );
- break;
- case EventConst::EVENT_ROLE_OFFLINE:
- /* 角色登出 */
- $_rs = (new RoleCon())->offline(
- $_com_rq, $_device_rq, $_game_rq, $_channel_rq, $_mem_rq, $_role_rq
- );
- break;
- case EventConst::EVENT_ORDER_CREATE:
- $_rs = (new OrderCon())->create(
- /* 充值下单 */
- $_com_rq, $_device_rq, $_game_rq, $_channel_rq, $_mem_rq, $_role_rq, $_order_rq
- );
- break;
- case EventConst::EVENT_ORDER_SUCCESS:
- /* 充值成功 */
- $_rs = (new OrderCon())->success(
- $_com_rq, $_device_rq, $_game_rq, $_channel_rq, $_mem_rq, $_role_rq, $_order_rq
- );
- break;
- default:
- $_rs = false;
- }
- return $_rs;
- // } catch (\Exception $e) {
- // Log::write(
- // 'line='.__LINE__.'&func='.__FUNCTION__.'&class='.__CLASS__.'&data='.json_encode($data)
- // .'&error_code='.$e->getCode().'&msg='.$e->getMessage(), Log::ERROR
- // );
- //
- // return false;
- // }
- }
- /**
- * 设置公共参数
- *
- * @param $data
- *
- * @return Common
- */
- private function setCommonData($data) {
- $_com_rq = new Common();
- $_com_rq->setData($data);
- return $_com_rq;
- }
- /**
- * 设置渠道数据
- *
- * @param $data
- *
- * @return Channel
- */
- private function setChannelData($data) {
- $_data = isset($data['agent']) ? $data['agent'] : [];
- $_channel_rq = new Channel();
- $_channel_rq->setData($_data);
- return $_channel_rq;
- }
- /**
- * 设置设备数据
- *
- * @param $data
- *
- * @return Device
- */
- private function setDeviceData($data) {
- $_data = isset($data['device']) ? $data['device'] : [];
- $_device_rq = new Device();
- $_device_rq->setData($_data);
- return $_device_rq;
- }
- /**
- * 设置游戏数据
- *
- * @param $data
- *
- * @return Game
- */
- private function setGameData($data) {
- $_data = isset($data['game']) ? $data['game'] : [];
- $_game_rq = new Game();
- $_game_rq->setData($_data);
- return $_game_rq;
- }
- /**
- * 设置玩家数据
- *
- * @param $data
- *
- * @return Mem
- */
- private function setMemData($data) {
- $_data = isset($data['mem']) ? $data['mem'] : [];
- $_mem_rq = new Mem();
- $_mem_rq->setData($_data);
- return $_mem_rq;
- }
- /**
- * 设置订单数据
- *
- * @param $data
- *
- * @return Order
- */
- private function setOrderData($data) {
- $_data = isset($data['order']) ? $data['order'] : [];
- $_order_rq = new Order();
- $_order_rq->setData($_data);
- return $_order_rq;
- }
- /**
- * 设置角色数据
- *
- * @param $data
- *
- * @return Role
- */
- private function setRoleData($data) {
- $_data = isset($data['role']) ? $data['role'] : [];
- $_role_rq = new Role();
- $_role_rq->setData($_data);
- return $_role_rq;
- }
- /**
- * 设置奔溃数据
- *
- * @param $data
- *
- * @return Crash
- */
- private function setCrashData($data) {
- $_data = isset($data['crash']) ? $data['crash'] : [];
- $_crash_rq = new Crash();
- $_crash_rq->setData($_data);
- return $_crash_rq;
- }
- }
|