AccountsInfo.php 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716
  1. <?php
  2. namespace App\Models;
  3. use App\Facade\TableName;
  4. use App\Http\helper\NumConfig;
  5. use App\Models\Account\AccountPhone;
  6. use App\Models\Treasure\GameScoreInfo;
  7. use App\Services\StoredProcedure;
  8. use Illuminate\Database\Eloquent\Model;
  9. use Illuminate\Support\Carbon;
  10. use Illuminate\Support\Facades\Cache;
  11. use Illuminate\Support\Facades\DB;
  12. use Illuminate\Support\Facades\Session;
  13. class AccountsInfo extends Model
  14. {
  15. const TABLE = 'QPAccountsDB.dbo.AccountsInfo';
  16. protected $table = self::TABLE;
  17. protected $primaryKey = 'UserID';
  18. public $timestamps = false;
  19. protected $fillable = ['UserID', 'SpreaderID', 'GameID', 'NickName', 'MemberOrder', 'MemberOverDate', 'Nullity', 'IsAndroid', 'Channel', 'RegisterDate','Registed'];
  20. public function gameScoreInfo()
  21. {
  22. return $this->hasOne(GameScoreInfo::class, 'UserID', 'UserID');
  23. }
  24. public function accountPhoneRelation()
  25. {
  26. return $this->hasOne(AccountPhone::class, 'UserID', 'UserID');
  27. }
  28. public function gameScoreLocker()
  29. {
  30. return $this->hasOne(GameScoreInfo::class, 'UserID', 'UserID');
  31. }
  32. //今日新增
  33. public static function today_register()
  34. {
  35. $today_register = DB::connection('read')->table('QPAccountsDB.dbo.AccountsInfo')
  36. ->where('IsAndroid', 0)
  37. ->whereDate('RegisterDate', date('Y-m-d'))
  38. ->selectRaw('count(*) as today_register,Channel')
  39. ->lock('with(nolock)')
  40. ->groupBy('Channel')
  41. ->pluck('today_register','Channel')->toArray();
  42. // ->first()->today_register;
  43. return $today_register;
  44. }
  45. public static function today_gameplay()
  46. {
  47. return DB::connection('sqlsrv')->table(TableName::QPAccountsDB() . 'AccountsInfo as ai')
  48. ->whereDate('RegisterDate', date('Y-m-d'))
  49. ->join(TableName::QPRecordDB() . 'RecordUserGameDayCount as rd', 'ai.UserID', 'rd.UserID')
  50. ->where('DateID', date('Ymd'))
  51. ->selectRaw('count(distinct(rd.UserID)) UserCount,Channel')
  52. ->groupBy('Channel')
  53. ->lock('with(nolock)')
  54. ->pluck('UserCount','Channel')->toArray();
  55. }
  56. public static function yesterday_gameplay()
  57. {
  58. return DB::connection('sqlsrv')->table(TableName::QPAccountsDB() . 'AccountsInfo as ai')
  59. ->whereDate('RegisterDate', date('Y-m-d', strtotime('-1 day')))
  60. ->join(TableName::QPRecordDB() . 'RecordUserGameDayCount as rd', 'ai.UserID', 'rd.UserID')
  61. ->where('DateID', date('Ymd', strtotime('-1 day')))
  62. ->selectRaw('count(distinct(rd.UserID)) UserCount,Channel')
  63. ->groupBy('Channel')
  64. ->lock('with(nolock)')
  65. ->pluck('UserCount','Channel')->toArray();
  66. }
  67. //昨日新增
  68. public static function yesterday_register()
  69. {
  70. $yesterday_register = Cache::remember('yesterday_register', Carbon::tomorrow(), function () {
  71. return $yesterday_register = DB::connection('read')->table('QPAccountsDB.dbo.AccountsInfo')
  72. ->selectRaw('count(*) as yesterday_register,Channel')
  73. ->whereRaw('RegisterDate>CONVERT(varchar(10),DATEADD(DAY,-1,GETDATE()),120)')
  74. ->whereRaw('RegisterDate<CONVERT(varchar(10),DATEADD(DAY,0,GETDATE()),120)')
  75. ->where('IsAndroid', 0)
  76. ->lock('with(nolock)')
  77. ->groupBy('Channel')
  78. ->pluck('yesterday_register','Channel')->toArray();
  79. // ->first()->yesterday_register;
  80. });
  81. return $yesterday_register;
  82. }
  83. //昨日新增
  84. public static function yesterday_register_now()
  85. {
  86. $yesterday_register = Cache::remember('yesterday_register_now', 5, function () {
  87. return $yesterday_register = DB::connection('read')->table('QPAccountsDB.dbo.AccountsInfo')
  88. ->selectRaw('count(*) as yesterday_register,Channel')
  89. ->whereRaw('RegisterDate>CONVERT(varchar(10),DATEADD(DAY,-1,GETDATE()),120) and RegisterDate<CONVERT(varchar(20),DATEADD(DAY,-1,GETDATE()),120)')
  90. ->where('IsAndroid', 0)
  91. ->lock('with(nolock)')
  92. ->groupBy('Channel')
  93. ->pluck('yesterday_register','Channel')->toArray();
  94. // ->first()->yesterday_register;
  95. });
  96. return $yesterday_register;
  97. }
  98. //日活
  99. public static function today_live()
  100. {
  101. $today_live = DB::connection('read')->table('QPAccountsDB.dbo.AccountsInfo')
  102. ->selectRaw('count(*) as today_live,Channel')
  103. ->whereRaw('LastLogonDate>CONVERT(varchar(10),GETDATE(),120)')
  104. ->where('IsAndroid', 0)
  105. ->lock('with(nolock)')
  106. ->groupBy('Channel')
  107. ->pluck('today_live','Channel')->toArray();
  108. // ->first()->today_live;
  109. return $today_live;
  110. }
  111. //昨日日活
  112. public static function yesterday_live()
  113. {
  114. $yesterday_live = Cache::remember('yesterday_live', Carbon::tomorrow(), function () {
  115. return $yesterday_live = DB::connection('read')->table('QPAccountsDB.dbo.AccountsInfo')
  116. // ->selectRaw('count(*) as yesterday_live')
  117. // ->whereRaw('DATEDIFF(DAY, LastLogonDate, GETDATE())=1')
  118. ->whereRaw('LastLogonDate>CONVERT(varchar(10),DATEADD(DAY,-1,GETDATE()),120)')
  119. ->where('IsAndroid', 0)
  120. ->lock('with(nolock)')
  121. ->groupBy('Channel')
  122. ->selectRaw("count(*) as num,Channel")
  123. ->pluck('num','Channel')->toArray();
  124. // ->first()->yesterday_live;
  125. });
  126. return $yesterday_live;
  127. }
  128. //昨日日活
  129. public static function yesterday_live_now()
  130. {
  131. $yesterday_live = Cache::remember('yesterday_live_now', 5, function () {
  132. return $yesterday_live = DB::connection('read')->table('QPAccountsDB.dbo.AccountsInfo')
  133. // ->selectRaw('count(*) as yesterday_live')
  134. // ->whereRaw('DATEDIFF(DAY, LastLogonDate, GETDATE())=1')
  135. ->whereRaw('LastLogonDate>CONVERT(varchar(10),DATEADD(DAY,-1,GETDATE()),120) and LastLogonDate<CONVERT(varchar(20),DATEADD(DAY,-1,GETDATE()),120)')
  136. ->where('IsAndroid', 0)
  137. ->lock('with(nolock)')
  138. ->groupBy('Channel')
  139. ->selectRaw("count(*) as num,Channel")
  140. ->pluck('num','Channel')->toArray();
  141. // ->first()->yesterday_live;
  142. });
  143. return $yesterday_live;
  144. }
  145. //本周周活
  146. public static function week_login()
  147. {
  148. return $week_login = DB::connection('read')->table('QPAccountsDB.dbo.AccountsInfo')
  149. // ->selectRaw('count(*) as week_login')
  150. ->whereRaw('DATEDIFF(WEEK, LastLogonDate, GETDATE())=0')
  151. ->where('IsAndroid', 0)
  152. ->lock('with(nolock)')
  153. ->groupBy('Channel')
  154. ->selectRaw("count(*) as num,Channel")
  155. ->pluck('num','Channel')->toArray();
  156. // ->first()->week_login;
  157. }
  158. //上周周活
  159. public static function yweek_login()
  160. {
  161. $yweek_login = Cache::remember('yweek_login', Carbon::tomorrow(), function () {
  162. return $yweek_login = DB::connection('read')->table('QPAccountsDB.dbo.AccountsInfo')
  163. // ->selectRaw('count(*) as yweek_login')
  164. ->whereRaw('DATEDIFF(WEEK, LastLogonDate, GETDATE())=1')
  165. ->where('IsAndroid', 0)
  166. ->lock('with(nolock)')
  167. ->groupBy('Channel')
  168. ->selectRaw("count(*) as num,Channel")
  169. ->pluck('num','Channel')->toArray();
  170. // ->first()->yweek_login;
  171. });
  172. return $yweek_login;
  173. }
  174. //月活
  175. public static function month_login()
  176. {
  177. return $month_login = DB::connection('read')->table('QPAccountsDB.dbo.AccountsInfo')
  178. // ->selectRaw('count(*) as month_login')
  179. ->whereRaw('DATEDIFF(MONTH, LastLogonDate, GETDATE())=0')
  180. ->where('IsAndroid', 0)
  181. ->lock('with(nolock)')
  182. ->groupBy('Channel')
  183. ->selectRaw("count(*) as num,Channel")
  184. ->pluck('num','Channel')->toArray();
  185. // ->first()->month_login;
  186. }
  187. //上月月活
  188. public static function ymonth_login()
  189. {
  190. $ymonth_login = Cache::remember('ymonth_login', Carbon::tomorrow(), function () {
  191. return $ymonth_login = DB::connection('read')->table('QPAccountsDB.dbo.AccountsInfo')
  192. // ->selectRaw('count(*) as ymonth_login')
  193. ->whereRaw('DATEDIFF(MONTH, LastLogonDate, GETDATE())=1')
  194. ->where('IsAndroid', 0)
  195. ->lock('with(nolock)')
  196. ->groupBy('Channel')
  197. ->selectRaw("count(*) as num,Channel")
  198. ->pluck('num','Channel')->toArray();
  199. // ->first()->ymonth_login;
  200. });
  201. return $ymonth_login;
  202. }
  203. //总注册用户
  204. public static function user_count()
  205. {
  206. return $user_count = DB::connection('read')->table('QPAccountsDB.dbo.AccountsInfo')
  207. ->where('IsAndroid', 0)
  208. ->count('UserID');
  209. // ->lock('with(nolock)')
  210. // ->groupBy('Channel')
  211. // ->selectRaw("count(*) as num,Channel")
  212. // ->pluck('num','Channel')->toArray();
  213. }
  214. public static function user_count_byChannel()
  215. {
  216. return $user_count = DB::connection('read')->table('QPAccountsDB.dbo.AccountsInfo')
  217. ->where('IsAndroid', 0)
  218. // ->count('UserID');
  219. ->lock('with(nolock)')
  220. ->groupBy('Channel')
  221. ->selectRaw("count(*) as num,Channel")
  222. ->pluck('num','Channel')->toArray();
  223. }
  224. //休眠用户
  225. public static function dormancy_user()
  226. {
  227. $dormancy_user=Cache::remember('dormancy_user', Carbon::tomorrow(), function () {
  228. return DB::connection('read')->table('QPAccountsDB.dbo.AccountsInfo')
  229. ->selectRaw('count(*) as dormancy_user')
  230. ->whereRaw('DATEDIFF(DAY, LastLogonDate, GETDATE())>7')
  231. ->where('IsAndroid', 0)
  232. ->first()->dormancy_user;
  233. // ->lock('with(nolock)')
  234. // ->groupBy('Channel')
  235. // ->selectRaw("count(*) as num,Channel")
  236. // ->pluck('num','Channel')->toArray();
  237. });
  238. return $dormancy_user;
  239. }
  240. public static function dormancy_user_byChannel()
  241. {
  242. $dormancy_user=Cache::remember('dormancy_user_byChannel', Carbon::tomorrow(), function () {
  243. return DB::connection('read')->table('QPAccountsDB.dbo.AccountsInfo')
  244. // ->selectRaw('count(*) as dormancy_user')
  245. ->whereRaw('DATEDIFF(DAY, LastLogonDate, GETDATE())>7')
  246. ->where('IsAndroid', 0)
  247. // ->first()->dormancy_user;
  248. ->lock('with(nolock)')
  249. ->groupBy('Channel')
  250. ->selectRaw("count(*) as num,Channel")
  251. ->pluck('num','Channel')->toArray();
  252. });
  253. return $dormancy_user;
  254. }
  255. //流失用户
  256. public static function ls_user()
  257. {
  258. $dormancy_user=Cache::remember('ls_user', Carbon::tomorrow(), function () {
  259. return DB::connection('read')->table('QPAccountsDB.dbo.AccountsInfo')
  260. ->selectRaw('count(*) as dormancy_user')
  261. ->whereRaw('DATEDIFF(DAY, LastLogonDate, GETDATE())>30')
  262. ->where('IsAndroid', 0)
  263. ->first()->dormancy_user;
  264. // ->lock('with(nolock)')
  265. // ->groupBy('Channel')
  266. // ->selectRaw("count(*) as num,Channel")
  267. // ->pluck('num','Channel')->toArray();
  268. });
  269. return $dormancy_user;
  270. }
  271. public static function ls_user_byChannel()
  272. {
  273. $dormancy_user=Cache::remember('ls_user_byChannel', Carbon::tomorrow(), function () {
  274. return DB::connection('read')->table('QPAccountsDB.dbo.AccountsInfo')
  275. // ->selectRaw('count(*) as dormancy_user')
  276. ->whereRaw('DATEDIFF(DAY, LastLogonDate, GETDATE())>30')
  277. ->where('IsAndroid', 0)
  278. // ->first()->dormancy_user;
  279. ->lock('with(nolock)')
  280. ->groupBy('Channel')
  281. ->selectRaw("count(*) as num,Channel")
  282. ->pluck('num','Channel')->toArray();
  283. });
  284. return $dormancy_user;
  285. }
  286. // 可提现余额
  287. public function CashAble($UserID, $Score, $StatusValue)
  288. {
  289. $ReturnValue = StoredProcedure::GetWithDrawLimit($UserID)['ReturnValue'] ?? 0;
  290. return $ReturnValue / NumConfig::NUM_VALUE;
  291. }
  292. // 用户余额
  293. public function Score($UserID)
  294. {
  295. return DB::connection('write')->table('QPTreasureDB.dbo.GameScoreInfo')
  296. ->where('UserID', $UserID)
  297. ->value('Score');
  298. }
  299. // 用户标签
  300. public function labelType($type)
  301. {
  302. switch ($type) {
  303. case 1:
  304. $user_label = '普通会员';
  305. break;
  306. case 2:
  307. $user_label = '首充会员';
  308. break;
  309. case 3:
  310. $user_label = '复充会员';
  311. break;
  312. case 4:
  313. $user_label = '优质会员';
  314. break;
  315. case 5:
  316. $user_label = '尊贵会员';
  317. break;
  318. case 6:
  319. $user_label = '发育不良';
  320. break;
  321. case 7:
  322. $user_label = '异常观察';
  323. break;
  324. case 8:
  325. $user_label = '重点关注';
  326. break;
  327. case 20:
  328. $user_label = '其他1';
  329. break;
  330. case 21:
  331. $user_label = '其他2';
  332. break;
  333. default:
  334. $user_label = '普通会员';
  335. break;
  336. }
  337. return $user_label;
  338. }
  339. // 登录IP
  340. public function LoginIP($UserIDs)
  341. {
  342. return DB::connection('read')->table(TableName::QPRecordDB() . 'RecordUserLogonStatistics as rs')
  343. ->join(TableName::QPRecordDB() . 'RecordUserLogonStatistics as rs1', 'rs.LogonIP', 'rs1.LogonIP')
  344. ->whereIn('rs.UserID', $UserIDs)
  345. ->selectRaw('count(distinct(rs1.UserID)) count,rs.UserID')
  346. ->groupBy('rs.UserID')
  347. ->pluck('count', 'UserID')->toArray();
  348. }
  349. // 用户备注
  350. public function remarks($UserIDs)
  351. {
  352. return DB::connection('read')->table(TableName::QPAccountsDB() . 'IndividualDatum')
  353. ->whereIn('UserID', $UserIDs)
  354. ->select('UserID', 'UserNote')
  355. ->pluck('UserNote', 'UserID')->toArray();
  356. }
  357. // 邮件未领取金币
  358. public function mail($UserIDs)
  359. {
  360. $mail = DB::connection('read')->table(TableName::QPAccountsDB() . 'PrivateMail')
  361. ->whereIn('UserID', $UserIDs)
  362. ->where('MailStatus', '<', 3)
  363. ->select('UserID', 'BonusString')
  364. ->get();
  365. $mailData = [];
  366. foreach ($mail as $val) {
  367. $arr = explode(',', $val->BonusString);
  368. if (!empty($arr) && isset($arr[0]) && $arr[0] == 30000) {
  369. $value = $arr[1] ?? 0;
  370. if (isset($mailData[$val->UserID])) {
  371. $mailData[$val->UserID] = $mailData[$val->UserID] + (int)$value;
  372. } else {
  373. $mailData[$val->UserID] = $value;
  374. }
  375. }
  376. }
  377. return $mailData;
  378. }
  379. // 受控标签
  380. public function controlLabel($UserIDs)
  381. {
  382. return DB::connection('read')->table(TableName::QPRecordDB() . 'RecordRechargeControl')
  383. ->whereIn('UserID', $UserIDs)
  384. ->where('State', '>', 0)
  385. ->pluck('State', 'UserID');
  386. }
  387. // 用户标签
  388. public function accountLabel($UserIDs)
  389. {
  390. return DB::connection('read')->table(TableName::QPAccountsDB() . 'AccountLabelDanControlLabel')
  391. ->whereIn('UserID', $UserIDs)
  392. ->select('type', 'IDColor', 'UserID')
  393. ->get();
  394. }
  395. // 用户手机号
  396. public function accountPhone($UserIDs)
  397. {
  398. return DB::connection('read')->table(TableName::QPAccountsDB() . 'AccountPhone')
  399. ->whereIn('UserID', $UserIDs)
  400. ->pluck('PhoneNum', 'UserID')->toArray();
  401. }
  402. // 用户在线状态
  403. public function accountOnLine($UserIDs)
  404. {
  405. return DB::connection('read')->table(TableName::QPTreasureDB() . 'GameScoreLocker as gsl')
  406. ->whereIn('UserID', $UserIDs)
  407. ->join(TableName::QPPlatformDB() . 'GameRoomInfo as gri', 'gsl.ServerID', 'gri.ServerID')
  408. ->whereRaw('datediff(hh,CollectDate,getdate())<=5')
  409. ->select('ServerName', 'UserID', 'gsl.KindID')
  410. ->get();
  411. }
  412. // 全部充值 -- 提现 -- 彩金 -- 总输赢 -- 总得提现手续费
  413. public function accountTotalStatistics($UserIDs)
  414. {
  415. return DB::connection('read')->table('QPRecordDB.dbo.RecordUserTotalStatistics')
  416. ->selectRaw('Recharge,Withdraw,Handsel,(WinScore + LostScore) Score,ServiceFee,UserID,Revenue,MaxDrawBase')
  417. ->whereIn('UserID', $UserIDs)
  418. ->get();
  419. }
  420. // 今日充值-- 今日提现-- 今日彩金 -- 总输赢
  421. public function accountTodayStatistics($UserIDs)
  422. {
  423. return DB::connection('read')->table(TableName::QPRecordDB() . 'RecordUserDataStatisticsNew')
  424. ->where('DateID', date('Ymd'))
  425. ->whereIn('UserID', $UserIDs)
  426. ->selectRaw('Withdraw,Handsel, Recharge, (WinScore + LostScore) Score,ServiceFee,UserID')
  427. ->get();
  428. }
  429. // 用户输赢
  430. public function accountWinLost($UserIDs)
  431. {
  432. return DB::connection('read')->table(TableName::QPRecordDB() . 'RecordUserTotalStatistics')
  433. ->whereIn('UserID', $UserIDs)
  434. ->selectRaw('IsNull(sum(WinScore),0) + IsNull(sum(LostScore),0) ChangeScore,UserID')
  435. ->groupBy('UserID')
  436. ->pluck('ChangeScore', 'UserID')->toArray();
  437. }
  438. // 用户上级ID
  439. public function accountSpreaderID($UserIDs)
  440. {
  441. return DB::connection('read')->table(TableName::QPAccountsDB() . 'AccountsInfo as ai')
  442. ->whereIn('UserID', $UserIDs)
  443. ->pluck('GameID', 'UserID')->toArray();
  444. }
  445. // 签到总奖励
  446. public function accountSignIn($where = [])
  447. {
  448. $Sql = DB::table(TableName::QPAccountsDB() . 'UserSignInInfo');
  449. !empty($where) && $Sql = $Sql->where($where);
  450. return $Sql->selectRaw('IsNull(sum(TotalReward),0) TotalReward')->first()->TotalReward / NumConfig::NUM_VALUE ?? 0;
  451. }
  452. // 获取用户ID
  453. public static function GetUserID(int $GameID)
  454. {
  455. return DB::connection('read')->table(TableName::QPAccountsDB() . 'AccountsInfo as ai')
  456. ->where('GameID', $GameID)
  457. ->value('UserID');
  458. }
  459. // 获取用户 GAMEID
  460. public static function GetUserGameID(int $UserID)
  461. {
  462. return DB::connection('read')->table(TableName::QPAccountsDB() . 'AccountsInfo as ai')
  463. ->where('UserID', $UserID)
  464. ->value('GameID');
  465. }
  466. // 用户手机号
  467. public function getUserPhone($UserID)
  468. {
  469. return DB::table(TableName::QPAccountsDB() . 'AccountPhone')->where('UserID', $UserID)->value('PhoneNum');
  470. }
  471. // 用户上级ID
  472. public function getSpreaderID($UserID)
  473. {
  474. return self::query()->where('UserID', $UserID)->value('SpreaderID');
  475. }
  476. // 游戏时长转换
  477. public function getUserPlayTimeCount($PlayTimeCount)
  478. {
  479. $second = $PlayTimeCount;
  480. $day = floor($second / (3600 * 24));
  481. $second = $second % (3600 * 24);//除去整天之后剩余的时间
  482. $hour = floor($second / 3600);
  483. $second = $second % 3600;//除去整小时之后剩余的时间
  484. $minute = floor($second / 60);
  485. //返回字符串
  486. return $day . '天' . $hour . '小时' . $minute . '分';
  487. }
  488. // 用户有没有在房间
  489. public function getUserOnLine($UserID)
  490. {
  491. // 有没有在房间
  492. return DB::connection('read')->table('QPTreasureDB.dbo.GameScoreLocker as gsl')
  493. ->join('QPPlatformDB.dbo.GameRoomInfo as gri', 'gsl.ServerID', 'gri.ServerID')
  494. ->where('UserID', $UserID)
  495. ->whereRaw('datediff(hh,CollectDate,getdate())<=5')
  496. ->select('ServerName')
  497. ->first()->ServerName ?? '';
  498. }
  499. // 用户未领邮件金额
  500. public function waitGetEmailScore($UserID)
  501. {
  502. return DB::connection('read')->table('QPAccountsDB.dbo.PrivateMail')
  503. ->where('UserID', $UserID)
  504. ->where('MailStatus', '<', 3)
  505. ->where('BonusString','<>','')
  506. ->sum('amount');
  507. }
  508. // 用户月卡【购买、已领】
  509. public function monthCard($UserID)
  510. {
  511. // 已买
  512. $buyMonthCard = DB::connection('read')->table('QPPlatformDB.dbo.MonthCard as mc')
  513. ->join('QPPlatformDB.dbo.UserMonthCard as uc', 'mc.CardID', 'uc.CardID')
  514. ->where('uc.UserID', $UserID)
  515. ->selectRaw('IsNull(sum(Price),0) TotalReward')
  516. ->value('TotalReward');
  517. // 已领
  518. $getMonthCard = DB::connection('read')->table('QPPlatformDB.dbo.UserMonthCard')
  519. ->where('UserID', $UserID)
  520. ->selectRaw('IsNull(sum(TotalReward),0) Reward')
  521. ->value('Reward');
  522. return [$buyMonthCard, $getMonthCard];
  523. }
  524. // 关联注册IP数量
  525. public function sameRegisterIPCount($RegisterIP)
  526. {
  527. return DB::connection('read')->table('QPAccountsDB.dbo.AccountsInfo')
  528. ->where('IsAndroid', 0)
  529. ->where('RegisterIP', $RegisterIP)
  530. ->count();
  531. }
  532. public function samePhoneCount($phone)
  533. {
  534. return DB::connection('read')->table('QPAccountsDB.dbo.AccountPhone')
  535. ->where('PhoneNum', $phone)
  536. ->count();
  537. }
  538. // 关联注册IP数量
  539. public function sameRegisterIPCountByUserID($UserID)
  540. {
  541. return 0;
  542. return DB::connection('read')->table('QPAccountsDB.dbo.AccountsInfo as di')
  543. ->join('QPAccountsDB.dbo.AccountsInfo as dif', 'di.RegisterIP', 'dif.RegisterIP')
  544. ->where('di.UserID', $UserID)
  545. ->selectRaw('count(1) countip')
  546. ->first()->countip;
  547. }
  548. //关联提现名称
  549. public function sameWithDrawBankName($name){
  550. if($name==='')return 0;
  551. return DB::table(TableName::QPAccountsDB() . 'AccountWithDrawInfo')
  552. ->select('UserID')
  553. ->where("BankUserName",$name)
  554. ->count();
  555. }
  556. //关联提现mail
  557. public function sameWithDrawEmail($email){
  558. if($email==='')return 0;
  559. return DB::table(TableName::QPAccountsDB() . 'AccountWithDrawInfo')
  560. ->select('UserID')
  561. ->where("EmailAddress",$email)
  562. ->count();
  563. }
  564. //关联提现名称
  565. public function sameWithDrawBankNameByUserID($UserID){
  566. return DB::connection('read')->table('QPAccountsDB.dbo.AccountWithDrawInfo as di')
  567. ->join('QPAccountsDB.dbo.AccountWithDrawInfo as dif', 'di.BankUserName', 'dif.BankUserName')
  568. ->where('di.UserID', $UserID)
  569. ->whereNotNull('di.BankUserName')
  570. ->where('di.BankUserName', '<>', '')
  571. ->selectRaw('count(1) count,di.BankUserName')
  572. ->groupBy('di.BankUserName')
  573. ->first();
  574. }
  575. //关联提现mail
  576. public function sameWithDrawEmailByUserID($UserID){
  577. return DB::connection('read')->table('QPAccountsDB.dbo.AccountWithDrawInfo as di')
  578. ->join('QPAccountsDB.dbo.AccountWithDrawInfo as dif', 'di.EmailAddress', 'dif.EmailAddress')
  579. ->where('di.UserID', $UserID)
  580. ->whereNotNull('di.EmailAddress')
  581. ->where('di.EmailAddress', '<>', '')
  582. ->selectRaw('count(1) count,di.EmailAddress')
  583. ->groupBy('di.EmailAddress')
  584. ->first();
  585. }
  586. // 关联登录IP数量
  587. public function sameLoginIPCount($UserID)
  588. {
  589. return DB::connection('read')->table('QPRecordDB.dbo.RecordUserLogonStatistics as a')
  590. ->join('QPRecordDB.dbo.RecordUserLogonStatistics as b', 'a.LogonIP', 'b.LogonIP')
  591. ->where('a.UserID', $UserID)
  592. ->selectRaw('count(distinct(b.UserID)) countIP')
  593. ->first()->countIP;
  594. }
  595. // 关联登录IP数量
  596. public function sameLoginMacCount($UserID)
  597. {
  598. $mac = DB::connection('read')->table('QPRecordDB.dbo.RecordUserLogonStatistics')
  599. ->where('UserID', $UserID)
  600. ->where('mac', '<>','')
  601. ->selectRaw("distinct(mac) mac")
  602. ->pluck('mac')->toArray();
  603. if($mac) {
  604. return DB::connection('read')->table('QPRecordDB.dbo.RecordUserLogonStatistics')
  605. ->whereIn('mac', $mac)
  606. ->selectRaw('count(distinct(UserID)) countIP')
  607. ->first()->countIP;
  608. }
  609. return 0;
  610. }
  611. // 关联银行卡
  612. public function sameBankNo($UserID)
  613. {
  614. return DB::connection('read')->table('QPAccountsDB.dbo.AccountWithDrawInfo as di')
  615. ->join('QPAccountsDB.dbo.AccountWithDrawInfo as dif', 'di.BankNo', 'dif.BankNo')
  616. ->where('di.UserID', $UserID)
  617. ->whereNotNull('di.BankNo')
  618. ->where('di.BankNo', '<>', '')
  619. ->selectRaw('count(1) count,di.BankNo')
  620. ->groupBy('di.BankNo')
  621. ->first();
  622. }
  623. // 用户彩金
  624. public function UserScoreChange($UserID, $Reason, $Type = 'string')
  625. {
  626. $Sql = DB::connection('read')->table('QPRecordDB.dbo.RecordUserScoreChange')
  627. ->where('UserID', $UserID);
  628. if ($Type == 'string') {
  629. $Sql->where('Reason', $Reason);
  630. } else {
  631. $Sql->whereIn('Reason', $Reason);
  632. }
  633. return $Sql->selectRaw('sum(ChangeScore) Score')
  634. ->first()->Score;
  635. }
  636. }