Role.php 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233
  1. <?php
  2. /**
  3. * Role.php UTF-8
  4. * 角色处理
  5. *
  6. * @date : 2018/5/30 16:48
  7. *
  8. * @license 这不是一个自由软件,未经授权不许任何使用和传播。
  9. * @author : wuyonghong <wyh@huosdk.com>
  10. * @version : HUOSDK 8.0
  11. */
  12. namespace huo\controller\data;
  13. use huo\controller\member\MemCache;
  14. use huo\model\log\DayMemLogModel;
  15. use huo\model\log\DmlSwitchModel;
  16. use huolib\constant\MemConst;
  17. use huolib\constant\OrderConst;
  18. use huolib\queue\request\Channel;
  19. use huolib\queue\request\Common;
  20. use huolib\queue\request\Device;
  21. use huolib\queue\request\Game;
  22. use huolib\queue\request\Mem as MemRq;
  23. use huolib\queue\request\Role as RoleRq;
  24. use huoMpAd\MpReportData;
  25. use think\Log;
  26. class Role {
  27. /**
  28. * 角色创建
  29. * 记录玩家创建角色时刻的日志。
  30. * 在创角界面,输入完角色名后,系统显示“创角成功”即可调用该接口。
  31. * http://doc.1tsdk.com/138?page_id=3383
  32. *
  33. * @param Common $com_rq
  34. * @param Device $device_rq
  35. * @param Game $game_rq
  36. * @param Channel $agent_rq
  37. * @param MemRq $mem_rq
  38. * @param RoleRq $role_rq
  39. *
  40. * @return bool
  41. */
  42. public function create(
  43. Common $com_rq, Device $device_rq, Game $game_rq, Channel $agent_rq, MemRq $mem_rq, RoleRq $role_rq
  44. ) {
  45. // TODO: luowei 2021-04-06 创建暂时不上报
  46. // // 创建角色,回传上报MP后台
  47. // try {
  48. // (new MpReportData())->createRoleReport(
  49. // $mem_rq->getMgMemId(), $role_rq->getServerId(), $role_rq->getRoleId()
  50. // );
  51. // } catch (\Exception $exception) {
  52. // \think\Log::write(['mp_report_error', $exception->getTraceAsString(), 'error', true]);
  53. // }
  54. $this->upRole($com_rq, $device_rq, $game_rq, $agent_rq, $mem_rq, $role_rq);
  55. return true;
  56. }
  57. /**
  58. * 角色登录
  59. * 记录玩家角色登录的日志。此处应与账户登录区分。
  60. *
  61. * 在角色界面,点击“登录游戏”后进入到游戏界面时调用该接口。
  62. *
  63. * ①一个服务器下只有一个角色,没有“登录游戏”按钮,以角色登录到游戏界面时调用接口;
  64. *
  65. * ②一个服务器下可有多个角色,以执行“登录游戏”操作进入游戏界面时调用接口。
  66. * http://doc.1tsdk.com/138?page_id=3384
  67. *
  68. * @param Common $com_rq
  69. * @param Device $device_rq
  70. * @param Game $game_rq
  71. * @param Channel $agent_rq
  72. * @param MemRq $mem_rq
  73. * @param RoleRq $role_rq
  74. *
  75. * @return bool
  76. */
  77. public function online(
  78. Common $com_rq, Device $device_rq, Game $game_rq, Channel $agent_rq, MemRq $mem_rq, RoleRq $role_rq
  79. ) {
  80. $this->upRole($com_rq, $device_rq, $game_rq, $agent_rq, $mem_rq, $role_rq);
  81. return true;
  82. }
  83. /**
  84. * 角色升级
  85. * 记录玩家升级的日志。玩家升级的时候调用该接口。
  86. * http://doc.1tsdk.com/138?page_id=3385
  87. *
  88. * @param Common $com_rq
  89. * @param Device $device_rq
  90. * @param Game $game_rq
  91. * @param Channel $agent_rq
  92. * @param MemRq $mem_rq
  93. * @param RoleRq $role_rq
  94. *
  95. * @return bool
  96. */
  97. public function levelup(
  98. Common $com_rq, Device $device_rq, Game $game_rq, Channel $agent_rq, MemRq $mem_rq, RoleRq $role_rq
  99. ) {
  100. $this->upRole($com_rq, $device_rq, $game_rq, $agent_rq, $mem_rq, $role_rq);
  101. return true;
  102. }
  103. /**
  104. * 角色退出
  105. * 记录玩家角色登出的日志。此处应与账户登出区分。
  106. *
  107. * ①一个服务器只存在一个角色且不能重建的情况下,返回“选择服务器”界面即可调用该接口。
  108. *
  109. * ②一个服务器可存在多个角色,返回“选择角色”界面即可调用该接口。
  110. * http://doc.1tsdk.com/138?page_id=3386
  111. *
  112. * @param Common $com_rq
  113. * @param Device $device_rq
  114. * @param Game $game_rq
  115. * @param Channel $agent_rq
  116. * @param MemRq $mem_rq
  117. * @param RoleRq $role_rq
  118. *
  119. * @return bool
  120. */
  121. public function offline(
  122. Common $com_rq, Device $device_rq, Game $game_rq, Channel $agent_rq, MemRq $mem_rq, RoleRq $role_rq
  123. ) {
  124. $this->upRole($com_rq, $device_rq, $game_rq, $agent_rq, $mem_rq, $role_rq);
  125. return true;
  126. }
  127. /**
  128. * 更新角色信息
  129. *
  130. * @param Common $com_rq
  131. * @param Device $device_rq
  132. * @param Game $game_rq
  133. * @param Channel $agent_rq
  134. * @param MemRq $mem_rq
  135. * @param RoleRq $role_rq
  136. * @param float $money
  137. *
  138. * @return bool
  139. */
  140. public function upRole(
  141. Common $com_rq, Device $device_rq, Game $game_rq, Channel $agent_rq, MemRq $mem_rq, RoleRq $role_rq
  142. , $money = 0.00
  143. ) {
  144. $_data['mg_mem_id'] = $mem_rq->getMgMemId();
  145. $_data['app_id'] = $com_rq->getAppId();
  146. $_data['server_id'] = $role_rq->getServerId();
  147. $_data['server_name'] = $role_rq->getServerName();
  148. $_data['role_id'] = $role_rq->getRoleId();
  149. $_data['role_name'] = $role_rq->getRoleName();
  150. $_data['role_level'] = $role_rq->getRoleLevel();
  151. $_data['combat_num'] = $role_rq->getCombatNum();
  152. $_data['last_login_time'] = $role_rq->getLastLoginTime();
  153. $_data['money'] = $money;
  154. $_data['os'] = $device_rq->getOs();
  155. if (MemConst::STATUS_NORMAL == $mem_rq->getStatus()) {
  156. //玩家状态
  157. $_mem_data = MemCache::ins()->getInfoById($mem_rq->getMemId());
  158. if (!empty($_mem_data) && MemConst::STATUS_NORMAL != $_mem_data['status']) {
  159. if (MemConst::STATUS_TRY == $_mem_data['status']) {
  160. $_mem_data['status'] = MemConst::STATUS_NORMAL;
  161. MemCache::ins()->updateMem($mem_rq->getMemId(), $_mem_data);
  162. }
  163. $_day_mem = new DayMem();
  164. $_model = new DayMemLogModel();
  165. $_map = [];
  166. $_map['date'] = date('Y-m-d', $com_rq->getTs());
  167. $_map['mem_id'] = $mem_rq->getMemId();
  168. $_map['app_id'] = $com_rq->getAppId();
  169. $_day_mem_data = $_model->getDetail($_map);
  170. /* 非空则更新 */
  171. if (!empty($_day_mem_data)) {
  172. $_day_mem->setDataFromDayMem($_day_mem_data);
  173. $_day_mem->setAuthCnt($_day_mem->getAuthCnt() + 1);
  174. $_model->updateLog($_day_mem->toArray(), $_day_mem_data['id']);
  175. }
  176. $_is_switch = OrderConst::PAY_SWITCH_NO; //默认不切换
  177. if (!empty($_mem_data) && OrderConst::PAY_SWITCH_YES == $_mem_data['is_switch']) {
  178. $_is_switch = OrderConst::PAY_SWITCH_YES;
  179. }
  180. if (OrderConst::PAY_SWITCH_YES == $_is_switch) {
  181. $_model = new DmlSwitchModel();
  182. $_day_mem_data = $_model->getDetail($_map);
  183. if (!empty($_day_mem_data)) {
  184. $_day_mem->setDataFromDayMem($_day_mem_data);
  185. $_day_mem->setAuthCnt($_day_mem->getAuthCnt() + 1);
  186. $_model->updateLog($_day_mem->toArray(), $_day_mem_data['id']);
  187. }
  188. }
  189. }
  190. }
  191. // if (\huolib\oa\Oa::hasOa()) {
  192. // $_oa_login = new \huolib\oa\OaUpInfo();
  193. // $_param = array();
  194. // $_param['create_time'] = $com_rq->getTs();
  195. // $_param['app_id'] = $com_rq->getAppId();
  196. // $_param['agent_id'] = $agent_rq->getCh();
  197. // $_param['mem_id'] = $mem_rq->getMemId();
  198. // $_param['ip'] = $device_rq->getIp();
  199. // $_param['imei'] = $device_rq->getDeviceId();
  200. // $_param['userua'] = $device_rq->getUserua();
  201. // $_param['role_level'] = $role_rq->getRoleLevel();
  202. // $_param['role_id'] = $role_rq->getRoleId();
  203. // $_param['role_name'] = $role_rq->getRoleName();
  204. // $_param['server_id'] = $role_rq->getServerId();
  205. // $_param['server_name'] = $role_rq->getServerName();
  206. // $_param['from'] = \huolib\oa\Oa::osToFrom($device_rq->getOs());
  207. // $u_re = $_oa_login->upInfo($_param);
  208. // if ($u_re) {
  209. // }
  210. // /* 处理渠道信息显示 */
  211. // $_agent_param = array();
  212. // $_agent_param['agent_id'] = $_param['agent_id'];
  213. // $_agent_param['app_id'] = $_param['app_id'];
  214. // $_agent_param['now_time'] = $_param['create_time'];
  215. // $_agent_oa_class = new \huolib\oa\AgentOa($_agent_param['agent_id']);
  216. // $_a_re = $_agent_oa_class->baseUpdate($_agent_param);
  217. // if ($_a_re) {
  218. // }
  219. // }
  220. return (new \huo\controller\member\Role())->updateData($_data);
  221. }
  222. }