AgentSystemController.php 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219
  1. <?php
  2. namespace App\Http\Controllers\Game;
  3. use App\Game\AgentBonusRecord;
  4. use App\Game\AgentCommission;
  5. use App\Game\AgentLinks;
  6. use App\Game\AgentLinksClickLog;
  7. use App\Game\AgentUser;
  8. use App\Game\AgentUserRecord;
  9. use App\Game\GlobalUserInfo;
  10. use App\Game\Services\AgentService;
  11. use App\Game\Services\OuroGameService;
  12. use App\Http\helper\NumConfig;
  13. use App\Models\AccountsInfo;
  14. use App\Models\Treasure\GameScoreInfo;
  15. use App\Services\ExtensionCopy;
  16. use App\Services\Extensions;
  17. use App\Util;
  18. use Carbon\Carbon;
  19. use Illuminate\Http\Request;
  20. use Illuminate\Support\Facades\DB;
  21. use Illuminate\Support\Facades\Redis;
  22. // 裂变入口
  23. // 数值统一要除 100
  24. class AgentSystemController
  25. {
  26. public function ClickScore(Request $request)
  27. {
  28. Util::WriteLog("click", $request->all());
  29. $code = $request->input('code');
  30. if ($code) {
  31. $link = AgentLinks::getByCode($code);
  32. if ($link) {
  33. $link->increment('ClickNum', 1);
  34. if ($request->has('add')) {
  35. $add = json_decode($request->input('add')??"{'country':'','city':''}");
  36. if ($add) {
  37. AgentLinksClickLog::create([
  38. 'LinkID' => $link->LinkID,
  39. 'Country' => $add->country??"",
  40. 'City' => $add->city??"",
  41. ]);
  42. }
  43. }
  44. }
  45. }
  46. }
  47. /**
  48. * /api/extension/getScore?UserID=2111
  49. * 获取裂变 可领额度
  50. * @param Request $request
  51. * @return array
  52. */
  53. public function getScore(Request $request)
  54. {
  55. $data['levels']=AgentCommission::getCommissionData();
  56. $user = LoginController::checkLogin($request);
  57. if(!$user)return apiReturnSuc($data);
  58. $UserID = $user->UserID;
  59. // 用户余额
  60. // $data['Score'] = GameScoreInfo::where('UserID', $UserID)
  61. // ->value('Score');
  62. $agentUser=AgentUser::query()->where('UserID', $UserID)->first();
  63. if(!$agentUser){
  64. $agentUser=AgentService::SetUserAgent($user->GlobalUID, $UserID);
  65. }
  66. extract($agentUser->toArray());
  67. //我的全部业绩
  68. $SubTotal=AgentUserRecord::query()
  69. ->where('UserID', $UserID)
  70. // ->where('HigherID',0)
  71. ->where('Date',Carbon::now()->format('Ymd'))
  72. ->sum('SubTotal');
  73. $data['info']=compact('SubTotal','downCount1', 'downCount2', 'downCount3', 'downCount4');
  74. //合并了level和rate
  75. $data['info']=array_merge($data['info'],AgentCommission::getLevelAndRate($SubTotal/NumConfig::NUM_VALUE));
  76. $data['subs']=AgentUserRecord::query()
  77. ->leftJoin("webgame.GlobalUserInfo as gi","gi.UserID","=","webgame.AgentUserRecord.UserID")
  78. ->where('HigherID', $UserID)->where('Date',Carbon::now()->format('Ymd'))
  79. ->select('NickName','FaceID','SubTotal')->get()->toArray();
  80. $subBonus=0;
  81. // dd($data['subs']);
  82. $data['subs']=array_map(function ($item) use (&$subBonus){
  83. $item=(object)$item;
  84. $item->img = GlobalUserInfo::faceidToAvatar($item->FaceID);
  85. $lr=AgentCommission::getLevelAndRate($item->SubTotal/NumConfig::NUM_VALUE);
  86. $item->level=$lr['level'];
  87. $item->rate=$lr['rate'];
  88. $item->bonus=$item->SubTotal*$item->rate;
  89. $subBonus+=$item->bonus;
  90. return $item;
  91. },$data['subs']);
  92. $data['info']['sub_bonus']=$subBonus;
  93. $data['info']['org_bonus']=$SubTotal*$data['info']['rate'];
  94. $data['info']['bonus']=$data['info']['org_bonus']-$subBonus;
  95. $data['history']=AgentBonusRecord::where('UserID', $UserID)
  96. ->where('status',AgentBonusRecord::STATUS_INIT)
  97. ->get()->toArray();
  98. $data['link']=AgentService::getShareLink($user->GlobalUID);
  99. return apiReturnSuc($data);
  100. }
  101. /**
  102. * 领取额度
  103. * @param Request $request
  104. * @return array
  105. */
  106. public function receiveScore(Request $request)
  107. {
  108. $user = $request->user();
  109. $UserID=$user->UserID;
  110. $ID=$request->input('ID');
  111. $record=AgentBonusRecord::where('ID',$ID)->first();
  112. if($record->GlobalUID!=$user->GlobalUID)return apiReturnFail(['web.agent.fail_wrong_id','Incorrect records ID']);
  113. if($record->status!=AgentBonusRecord::STATUS_INIT)return apiReturnFail(['web.agent.fail_wrong_status','Already received']);
  114. $record->update(['status'=>AgentBonusRecord::STATUS_GET]);
  115. OuroGameService::AddScore($UserID,$record->bonus,OuroGameService::REASON_AgentBonus);
  116. OuroGameService::AddDrawBase($UserID,$record->bonus,OuroGameService::REASON_AgentBonus);
  117. return apiReturnSuc($record->toArray());
  118. }
  119. public function statLastDayMoney(Request $request)
  120. {
  121. $recount=$request->input('recount')??0;
  122. $Date=Carbon::yesterday()->format('Ymd');
  123. if(!$recount&&AgentBonusRecord::where('Date',$Date)->exists()){
  124. return "EXISTS";
  125. }
  126. $uids=AgentUserRecord::where('Date',$Date)
  127. ->select('UserID','GlobalUID')
  128. ->distinct()->get()
  129. ->toArray();
  130. // dd($uids);
  131. foreach ($uids as &$data) {
  132. $UserID=$data['UserID'];
  133. //我的全部业绩
  134. $SubTotal = AgentUserRecord::query()
  135. ->where('UserID', $UserID)
  136. // ->where('HigherID', 0)
  137. ->where('Date', $Date)
  138. ->sum('SubTotal');
  139. //合并了level和rate
  140. $data=array_merge($data,AgentCommission::getLevelAndRate($SubTotal / NumConfig::NUM_VALUE));
  141. $subs = AgentUserRecord::query()
  142. ->where('HigherID', $UserID)
  143. ->where('Date', Carbon::yesterday()->format('Ymd'))
  144. ->select('UserID','SubTotal')->get()->toArray();
  145. $subBonus = 0;
  146. foreach ($subs as &$item) {
  147. $lr = AgentCommission::getLevelAndRate($item['SubTotal'] / NumConfig::NUM_VALUE);
  148. $item['level'] = $lr['level'];
  149. $item['rate'] = $lr['rate'];
  150. $item['bonus'] = $item['SubTotal'] * $item['rate'];
  151. $subBonus += $item['bonus'];
  152. }
  153. $data['SubTotal'] = $SubTotal;
  154. $data['sub_bonus'] = $subBonus;
  155. $data['org_bonus'] = $SubTotal * $data['rate'];
  156. $data['bonus'] = $data['org_bonus'] - $subBonus;
  157. $data['status'] = AgentBonusRecord::STATUS_INIT;
  158. $data['Date'] = $Date;
  159. if($data['bonus']>0)AgentBonusRecord::create($data);
  160. }
  161. dd($uids);
  162. }
  163. // 获取用户领取记录
  164. public function history(Request $request)
  165. {
  166. $user = $request->user();
  167. $UserID=$user->UserID;
  168. $data['history']=AgentBonusRecord::where('UserID', $UserID)
  169. ->where('status',AgentBonusRecord::STATUS_GET)
  170. ->get()->toArray();
  171. return apiReturnSuc($data);
  172. }
  173. // 充值比率
  174. public function rechargeRate()
  175. {
  176. $AgentRebateRatio = DB::connection('write')->table('QPAccountsDB.dbo.SystemStatusInfo')
  177. ->where('StatusName', 'AgentRebateRatio1')
  178. ->orWhere('StatusName', 'AgentRebateRatio2')
  179. ->select('StatusName', 'StatusValue')
  180. ->pluck('StatusValue', 'StatusName');
  181. return apiReturnSuc($AgentRebateRatio);
  182. }
  183. }