SpecialService.php 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. <?php
  2. namespace app\api\service;
  3. use think\Env;
  4. use app\common\model\MemberCoinInfo;
  5. use app\common\model\MemberCoinPay;
  6. use app\common\model\Members;
  7. use app\service\WelfareService;
  8. use think\Db;
  9. use think\exception\ValidateException;
  10. class SpecialService
  11. {
  12. protected $batchValidate = false;
  13. protected $failException = false;
  14. public function welfare($params)
  15. {
  16. switch ($params['gameid']) {
  17. case 157:
  18. case 158:
  19. $this->welfareRongyao($params, 5, 61);
  20. break;
  21. case 211:
  22. case 212:
  23. $welfare = [
  24. 6 => 104,
  25. 30 => 105,
  26. 98 => 106,
  27. 198 => 107,
  28. 328 => 108,
  29. 648 => 109,
  30. 1000 => 110,
  31. 2000 => 111,
  32. 5000 => 112,
  33. 10000 => 113,
  34. 20000 => 114,
  35. 8 => 126,
  36. 38 => 163,
  37. 48 => 164,
  38. 50 => 165,
  39. 128 => 166,
  40. 2888 => 167,
  41. 1 => 168,
  42. 120 => 176,
  43. 18 => 177,
  44. ];
  45. $welfareVoluntarily = model('common/WelfareVoluntarily')->whereRaw(sprintf('FIND_IN_SET(%s,game_id)', $params['gameid']))->where(['condition'=>$params['amount']])->find();
  46. //太古神王单笔返利
  47. if ($welfareVoluntarily) {
  48. $this->welfareRongyao($params, $welfareVoluntarily['grant_type_id'], $welfareVoluntarily['welfare_id']);
  49. }
  50. // //太古神王单笔返利
  51. // if (isset($welfare[intval($params['amount'])])) {
  52. // $this->welfareRongyao($params, 3, $welfare[intval($params['amount'])]);
  53. // }
  54. else {
  55. $template = '【玩家福利】太古神王自动发放异常:订单号' . $params['orderid'] . '错误信息' . '福利金额不存在';
  56. curlDD($template, Env::get('notice_weelfar_url'), true);
  57. }
  58. break;
  59. }
  60. }
  61. /**
  62. * 荣耀每日首充礼包发放 太古神王单笔返利
  63. * @param $params
  64. */
  65. public function welfareRongyao($params, $grant_type_id, $welfare_id)
  66. {
  67. $payInfo = cache('PayNotify:updateOrder:' . $params['orderid']);
  68. if (!$payInfo) {
  69. return false;
  70. }
  71. $data = [
  72. 'ids' => $payInfo['id'],
  73. 'game_id' => $params['gameid'],
  74. 'grant_type_id' => $grant_type_id,
  75. 'welfare_id' => $welfare_id,
  76. 'server_id' => '',
  77. 'channel_id' => '',
  78. 'username' => '',
  79. 'rolename' => '',
  80. 'roleid' => '',
  81. 'orderid' => '',
  82. 'login_start_time' => '',
  83. 'login_end_time' => '',
  84. 'cycle_id' => '1',
  85. 'login_time' => date('Y-m-d'),
  86. 'page' => 1,
  87. 'pageSize' => 10,
  88. 'time' => time(),
  89. ];
  90. $checkResult = $this->validate($data, 'Welfare.applySingleGrandWelfare');
  91. if (true !== $checkResult) {
  92. $this->result([], 0, $checkResult, 'json');
  93. }
  94. $page = isset($data['page']) ? $data['page'] : 1;
  95. $pageSize = isset($data['pageSize']) ? $data['pageSize'] : 10;
  96. $welfareService = new WelfareService();
  97. if ($data['channel_id']) {
  98. $data['channel_id'] = [$data['channel_id']];
  99. }
  100. $channelList = $this->getChannelList($params['gameid']);
  101. $result = $welfareService->wefare($data['grant_type_id'], $data['game_id'], array_column(json_decode(json_encode($channelList), true), 'id'), $channelList, $page, $pageSize, $data, true, false);
  102. if ($result['code'] == 20000) {
  103. return true;
  104. } else {
  105. $template = '【玩家福利】发放异常:订单号' . $params['orderid'] . '错误信息' . $result['msg'];
  106. curlDD($template, Env::get('notice_weelfar_url'), true);
  107. }
  108. }
  109. private function getChannelList($game_id)
  110. {
  111. if ($gameBand = model('GameBand')->whereOr('android_game_id', $game_id)->whereOr('ios_game_id', $game_id)->find()) {
  112. $where = [$gameBand['android_game_id'], $gameBand['ios_game_id']];
  113. } else {
  114. $where = [$game_id];
  115. }
  116. return model('SdkGameList')->join('nw_channel', 'nw_channel.id=cy_sdkgamelist.channel_id')->whereIn('cy_sdkgamelist.gameid', $where)->cache('welfare:welfareGrant:getChannelList:' . md5(json_encode($where)), 300)->field('nw_channel.id,nw_channel.name as value')->group('id')->select();
  117. }
  118. public function validate($data, $validate, $message = [], $batch = false, $callback = null)
  119. {
  120. if (is_array($validate)) {
  121. $v = new \app\common\library\ValidateExtend; //调用Validate的扩展类
  122. $v->rule($validate);
  123. } else {
  124. // 支持场景
  125. if (strpos($validate, '.')) {
  126. list($validate, $scene) = explode('.', $validate);
  127. }
  128. $v = \think\Loader::validate($validate);
  129. !empty($scene) && $v->scene($scene);
  130. }
  131. // 是否批量验证
  132. if ($batch || $this->batchValidate) {
  133. $v->batch(true);
  134. }
  135. if (is_array($message)) {
  136. $v->message($message);
  137. }
  138. if ($callback && is_callable($callback)) {
  139. call_user_func_array($callback, [$v, &$data]);
  140. }
  141. if (!$v->check($data)) {
  142. if ($this->failException) {
  143. throw new ValidateException($v->getError());
  144. } else {
  145. return $v->getError();
  146. }
  147. } else {
  148. return true;
  149. }
  150. }
  151. }