AgentAttrsRepository.php 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. <?php
  2. namespace App\Repositories;
  3. use App\Models\Mongo\AgentAttrsLogsModel;
  4. use App\Models\Mongo\AgentAttrsTodayModel;
  5. use App\Models\Mongo\PayLogsModel;
  6. use App\Models\Mongo\UsersModel;
  7. use App\Models\Mysql\AgentAttrsModel;
  8. use App\Models\Mysql\AgentModel;
  9. use Carbon\Carbon;
  10. use KZ2\Laravel\Repositories\Eloquent\Repository;
  11. class AgentAttrsRepository extends Repository
  12. {
  13. public function model()
  14. {
  15. return AgentAttrsModel::class;
  16. }
  17. /**
  18. * 创建一个.
  19. * @param $uid
  20. * @return \Illuminate\Database\Eloquent\Builder|\Illuminate\Database\Eloquent\Model
  21. */
  22. public function createOne($uid)
  23. {
  24. $setarr = [
  25. 'agent_uid' => $uid,
  26. ];
  27. return AgentAttrsModel::query()->create($setarr);
  28. }
  29. /**
  30. * 代理统计数据
  31. *
  32. * @param $accountInfo
  33. * @return int[]
  34. */
  35. public function getAgentSumTotal($accountInfo)
  36. {
  37. $field = 'td_users_deduction,users_deduction,commission_money,td_commission_money,deduction_money,td_deduction_money,td_users_total,td_date,td_deduction_success_money';
  38. $sumData = AgentAttrsModel::query()->selectRaw($field)->where('agent_uid', $accountInfo['uid'])->first();
  39. $res = [
  40. 'td_users_deduction' => 0, //今日注册 ok
  41. 'td_add_agent' => 0, //今天新增代理 ok
  42. 'td_down_commission_money' => 0, //今日下级抽成 ok
  43. 'td_commission_money' => 0, //今日用户抽成 ok
  44. 'td_profit' => 0, //今日盈利 ok
  45. 'td_deduction_success_money' => 0 //今日充值 ok
  46. ];
  47. $childMap = explode(',', $accountInfo['child_uids']);
  48. //获取今日之前的代理统计总数据
  49. $totalAgentAttrs = AgentAttrsLogsModel::where('agent_uid', $accountInfo['uid'])->orderBy('created_at', 'desc')->first();
  50. //获取今日的统计数据
  51. $todayAgentAttrs = AgentAttrsTodayModel::where(['agent_uid' => $accountInfo['uid'], 'date' => toMongoIsoDate(Carbon::parse(date('Y-m-d'))->startOfDay())])->first();
  52. $dayDate = date('Y-m-d');
  53. if ($sumData->td_date == $dayDate) {
  54. //今日用户抽成 ok
  55. if (isset($sumData->td_commission_money)) {
  56. $res['td_commission_money'] = (int)$sumData->td_commission_money;
  57. }
  58. //今日盈利 ok
  59. if (isset($todayAgentAttrs->td_commission_money)) {
  60. $res['td_profit'] = (int)$todayAgentAttrs->td_commission_money;
  61. }
  62. //今日充值 ok
  63. if (isset($sumData->td_deduction_success_money)) {
  64. $res['td_deduction_success_money'] = (int)$sumData->td_deduction_success_money;
  65. }
  66. //今日下级抽成 ok
  67. $res['td_down_commission_money'] = ($todayAgentAttrs->td_commission_money ?? 0) - ($sumData->td_commission_money ?? 0);
  68. if ($res['td_down_commission_money'] < 0) {
  69. $res['td_down_commission_money'] = 0;
  70. }
  71. //今天新增代理
  72. $tdAddAgent = AgentModel::query()->where('parent_uid', $accountInfo['uid'])->whereBetween('created_at', [$dayDate . ' 00:00:00', $dayDate . ' 23:59:59'])->count();
  73. $res['td_add_agent'] = $tdAddAgent;
  74. }
  75. //总注册 ok
  76. if ($accountInfo['uid'] == 'qkx07G') {
  77. $res['users_deduction'] = UsersModel::where(['agent_uid' => $accountInfo['uid'], 'is_deduction' => 0])->groupBy('user_uid')->count() - 2235;
  78. } else {
  79. $res['users_deduction'] = UsersModel::where(['agent_uid' => $accountInfo['uid'], 'is_deduction' => 0])->groupBy('user_uid')->count();
  80. }
  81. //总代理 ok
  82. $res['total_agent'] = empty($childMap[0]) ? 0 : count($childMap);
  83. //总抽成 ok
  84. $res['commission_money'] = (int)$sumData->commission_money;
  85. //下级总抽成
  86. $res['down_commission_money'] = ($todayAgentAttrs->td_commission_money ?? 0) + ($totalAgentAttrs->commission_money ?? 0) - $sumData->commission_money;
  87. if ($res['down_commission_money'] < 0) {
  88. $res['down_commission_money'] = 0;
  89. }
  90. //总盈利
  91. $res['total_profit'] = ($todayAgentAttrs->td_commission_money ?? 0) + ($totalAgentAttrs->commission_money ?? 0); //总盈利
  92. $betweenDate = [Carbon::parse($dayDate . ' 00:00:00'), Carbon::parse($dayDate . ' 23:59:59')];
  93. //获取今日充值人数
  94. // $dayPayNum = PayLogsModel::whereBetween('paid_at', $betweenDate)->where(['order_status' => 1, 'agent_uid' => $accountInfo['uid']])->groupBy('user_uid')->count();
  95. //今日注册人数
  96. if ($accountInfo['uid'] == 'qkx07G' && $dayDate == '2022-07-30') {
  97. $dayRegNum = 966;
  98. } else {
  99. $dayRegNum = UsersModel::whereBetween('created_at', $betweenDate)->where(['agent_uid' => $accountInfo['uid'], 'is_deduction' => 0])->groupBy('user_uid')->count();
  100. }
  101. //今日注册 ok
  102. $res['td_users_deduction'] = $dayRegNum;
  103. $res['commission_ratio'] = (int)$accountInfo['commission_ratio']; //分成比例
  104. //获取上级
  105. $parentInfo = AgentModel::query()->where('uid', $accountInfo['parent_uid'])->first(['username']);
  106. $res['parent'] = $parentInfo->username ?? '';
  107. return $res;
  108. }
  109. }