Role.php 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. <?php
  2. /**
  3. * Role.php UTF-8
  4. * 角色处理
  5. *
  6. * @date : 2018/1/19 21:01
  7. *
  8. * @license 这不是一个自由软件,未经授权不许任何使用和传播。
  9. * @author : wuyonghong <wyh@huosdk.com>
  10. * @version : HUOSDK 8.0
  11. */
  12. namespace huo\controller\member;
  13. use huo\controller\common\Base;
  14. use huo\controller\request\Device;
  15. use huo\controller\request\Game as GameRq;
  16. use huo\controller\request\Mem;
  17. use huo\controller\request\Role as RoleRq;
  18. use huo\model\game\GameServerSwitchModel;
  19. use huo\model\log\MemRoleLogModel;
  20. use huo\model\member\MgRoleModel;
  21. use huolib\constant\OrderConst;
  22. use huoMpAd\MpReportData;
  23. class Role extends Base {
  24. /**
  25. * 插入记录
  26. *
  27. * @param Mem $mem
  28. * @param RoleRq $role
  29. * @param GameRq $game_rq
  30. * @param float $money
  31. *
  32. * @param Device|null $device_rq
  33. *
  34. * @return bool|mixed
  35. */
  36. public function insertLog(Mem $mem, RoleRq $role, GameRq $game_rq, $money = 0.00, Device $device_rq = null) {
  37. $_role_model = new MemRoleLogModel();
  38. $_data = $role->toArray();
  39. $_data['mg_mem_id'] = $mem->getMgMemId();
  40. $_data['app_id'] = $game_rq->getHAppId();
  41. $_data['money'] = $money;
  42. $_data['create_time'] = time();
  43. /* 异步处理数据 */
  44. (new \huo\controller\queue\Role($game_rq->getHAppId()))->upRole($game_rq, $mem, $role, $device_rq);
  45. return $_role_model->insertLog($_data);
  46. }
  47. /**
  48. * 更新橘色数据
  49. *
  50. * @param $data
  51. *
  52. * @return bool
  53. */
  54. public function updateData($data) {
  55. if (empty($data['mg_mem_id']) || empty($data['app_id']) || empty($data['server_id'])
  56. || empty($data['role_id'])) {
  57. return false;
  58. }
  59. $_mg_mem_id = $data['mg_mem_id'];
  60. $_app_id = $data['app_id'];
  61. $_server_id = $data['server_id'];
  62. $_role_id = $data['role_id'];
  63. $_model = new MgRoleModel();
  64. $_data = $_model->getDetailByMemGameServerRole($_mg_mem_id, $_app_id, $_server_id, $_role_id);
  65. if (empty($_data)) {
  66. /* 新增插入 */
  67. $_data = $data;
  68. if (!empty($data['last_login_time'])) {
  69. $_data['ext']['last_login_time'] = time();
  70. }
  71. $_rs = $_model->addData($_data);
  72. if (false != $_rs && !empty($_app_id) && 81234702 != $_app_id && !empty($_server_id)) {
  73. /* 魔龙契约 传入的游戏区服有问题暂时不写入 */
  74. /* 查找区服是否存在,不存在则插入数据 */
  75. $_gss_model = new GameServerSwitchModel();
  76. $_ser_data = $_gss_model->getInfo($_app_id, $_server_id);
  77. if (empty($_ser_data)) {
  78. $_ser_data = [
  79. 'app_id' => $_app_id,
  80. 'server_id' => $_server_id,
  81. 'server_name' => $data['server_name'],
  82. 'is_switch' => OrderConst::PAY_SWITCH_YES,
  83. ];
  84. $_gss_model->addData($_ser_data);
  85. }
  86. }
  87. return $_rs;
  88. } else {
  89. if (empty($data['money']) && $_data['role_level'] >= $data['role_level']
  90. && empty($data['last_login_time'])) {
  91. /* 角色未升级或者未更新 不更新数据 */
  92. return true;
  93. }
  94. if (empty($_data['os']) && !empty($data['os'])) {
  95. $_data['os'] = $data['os'];
  96. }
  97. if (!empty($data['money'])) {
  98. $_data['money'] += $data['money'];
  99. }
  100. if (!empty($data['combat_num'])) {
  101. $_data['combat_num'] = $data['combat_num'];
  102. }
  103. if (!empty($data['role_name'])) {
  104. $_data['role_name'] = $data['role_name'];
  105. }
  106. if (!empty($data['server_name'])) {
  107. $_data['server_name'] = $data['server_name'];
  108. }
  109. if ($_data['role_level'] < $data['role_level']) {
  110. $_data['role_level'] = $data['role_level'];
  111. }
  112. if (!empty($data['last_login_time'])) {
  113. $_data['ext']['last_login_time'] = $data['last_login_time'];
  114. }
  115. if (empty($_data['ext']['last_login_time'])) {
  116. $_data['ext']['last_login_time'] = time();
  117. }
  118. if (empty($data['ext']['login_day'])) {
  119. $data['ext']['login_day'] = 1;
  120. } elseif (date('Y-m-d') != date('Y-m-d', $_data['ext']['last_login_time'])) {
  121. $data['ext']['login_day'] += 1;
  122. }
  123. $_data['update_time'] = \time();
  124. return $_model->updateData($_data, $_data['id']);
  125. }
  126. }
  127. }