UserStatisticController.php 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Models\UserOperationDaily;
  4. use App\Models\UserOperationLog;
  5. use App\Models\Wbw;
  6. use App\Models\Sentence;
  7. use App\Models\DhammaTerm;
  8. use App\Models\UserDict;
  9. use Illuminate\Http\Request;
  10. use App\Http\Api\AuthApi;
  11. use App\Http\Api\UserApi;
  12. use Illuminate\Support\Facades\Cache;
  13. use App\Tools\RedisClusters;
  14. class UserStatisticController extends Controller
  15. {
  16. /**
  17. * Display a listing of the resource.
  18. *
  19. * @return \Illuminate\Http\Response
  20. */
  21. public function index()
  22. {
  23. //
  24. }
  25. /**
  26. * Show the form for creating a new resource.
  27. *
  28. * @return \Illuminate\Http\Response
  29. */
  30. public function create()
  31. {
  32. //
  33. }
  34. /**
  35. * Store a newly created resource in storage.
  36. *
  37. * @param \Illuminate\Http\Request $request
  38. * @return \Illuminate\Http\Response
  39. */
  40. public function store(Request $request)
  41. {
  42. //
  43. }
  44. /**
  45. * Display the specified resource.
  46. *
  47. * @param \App\Models\UserOperationDaily $userOperationDaily
  48. * @return \Illuminate\Http\Response
  49. */
  50. public function show(string $userName)
  51. {
  52. //
  53. $queryUserId = UserApi::getIntIdByName($userName);
  54. $queryUserUuid = UserApi::getIdByName($userName);
  55. $cacheExpiry = config('mint.cache.expire');
  56. //总经验值
  57. $expSum = RedisClusters::remember("user/{$userName}/exp/sum",$cacheExpiry,function() use($queryUserId){
  58. return UserOperationDaily::where('user_id',$queryUserId)
  59. ->sum('duration');
  60. });
  61. //逐词解析
  62. $wbwCount = RedisClusters::remember("user/{$userName}/wbw/count",$cacheExpiry,function() use($queryUserId){
  63. return Wbw::where('editor_id',$queryUserId)
  64. ->count();
  65. });
  66. //查字典次数
  67. $lookupCount = RedisClusters::remember("user/{$userName}/lookup/count",$cacheExpiry,function() use($queryUserId){
  68. return UserOperationLog::where('user_id',$queryUserId)
  69. ->where('op_type','dict_lookup')
  70. ->count();
  71. });
  72. //译文
  73. //TODO 判断是否是译文channel
  74. $translationCount = RedisClusters::remember("user/{$userName}/translation/count",$cacheExpiry,function() use($queryUserUuid){
  75. return Sentence::where('editor_uid',$queryUserUuid)
  76. ->count();
  77. });
  78. $translationCountPub = RedisClusters::remember("user/{$userName}/translation/count-pub",$cacheExpiry,function() use($queryUserUuid){
  79. return Sentence::where('editor_uid',$queryUserUuid)
  80. ->where('status',30)
  81. ->count();
  82. });
  83. //术语
  84. $termCount = RedisClusters::remember("user/{$userName}/term/count",$cacheExpiry,function() use($queryUserId){
  85. return DhammaTerm::where('editor_id',$queryUserId)
  86. ->count();
  87. });
  88. $termCountWithNote = RedisClusters::remember("user/{$userName}/term/count-note",$cacheExpiry,function() use($queryUserId){
  89. return DhammaTerm::where('editor_id',$queryUserId)
  90. ->where('note',"<>","")
  91. ->count();
  92. });
  93. //单词本
  94. $myDictCount = RedisClusters::remember("user/{$userName}/dict/count",$cacheExpiry,function() use($queryUserId){
  95. return UserDict::where('creator_id',$queryUserId)
  96. ->count();
  97. });
  98. return $this->ok([
  99. "exp" => ["sum"=>(int)$expSum],
  100. "wbw" => ["count"=>(int)$wbwCount],
  101. "lookup" => ["count"=>(int)$lookupCount],
  102. "translation" =>["count"=>(int)$translationCount,
  103. "count_pub"=>(int)$translationCountPub],
  104. "term" => ["count"=>(int)$termCount,
  105. "count_with_note"=>(int)$termCountWithNote],
  106. "dict" => ["count"=>(int)$myDictCount],
  107. ]);
  108. }
  109. /**
  110. * Show the form for editing the specified resource.
  111. *
  112. * @param \App\Models\UserOperationDaily $userOperationDaily
  113. * @return \Illuminate\Http\Response
  114. */
  115. public function edit(UserOperationDaily $userOperationDaily)
  116. {
  117. //
  118. }
  119. /**
  120. * Update the specified resource in storage.
  121. *
  122. * @param \Illuminate\Http\Request $request
  123. * @param \App\Models\UserOperationDaily $userOperationDaily
  124. * @return \Illuminate\Http\Response
  125. */
  126. public function update(Request $request, UserOperationDaily $userOperationDaily)
  127. {
  128. //
  129. }
  130. /**
  131. * Remove the specified resource from storage.
  132. *
  133. * @param \App\Models\UserOperationDaily $userOperationDaily
  134. * @return \Illuminate\Http\Response
  135. */
  136. public function destroy(UserOperationDaily $userOperationDaily)
  137. {
  138. //
  139. }
  140. }