UserDictResource.php 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. <?php
  2. namespace App\Http\Resources;
  3. use Illuminate\Http\Resources\Json\JsonResource;
  4. use App\Http\Api\UserApi;
  5. use App\Models\UserOperationDaily;
  6. use App\Models\DictInfo;
  7. use App\Http\Api\MdRender;
  8. class UserDictResource extends JsonResource
  9. {
  10. /**
  11. * Transform the resource into an array.
  12. *
  13. * @param \Illuminate\Http\Request $request
  14. * @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable
  15. */
  16. public function toArray($request)
  17. {
  18. $data = [
  19. 'id'=>$this->id,
  20. 'word'=>$this->word,
  21. 'type'=>$this->type,
  22. 'grammar'=>$this->grammar,
  23. 'mean'=>$this->mean,
  24. 'parent'=>$this->parent,
  25. 'note'=>$this->note,
  26. 'factors'=>$this->factors,
  27. 'source'=>$this->source,
  28. 'status'=>$this->status,
  29. 'confidence'=>$this->confidence,
  30. 'updated_at'=>$this->updated_at,
  31. 'creator_id'=>$this->creator_id,
  32. ];
  33. if(!empty($this->note)){
  34. $mdRender = new MdRender(['format'=>'react','lang'=>'zh-Hans']);
  35. $data['note'] = $mdRender->convert($this->note);
  36. }
  37. if($request->get('view')==='community'){
  38. $data['editor'] = UserApi::getById($this->creator_id);
  39. //毫秒计算的经验值
  40. $exp = UserOperationDaily::where('user_id',$this->creator_id)
  41. ->where('date_int','<=',date_timestamp_get(date_create($this->updated_at))*1000)
  42. ->sum('duration');
  43. $data['exp'] = (int)($exp/1000);
  44. }
  45. if($request->get('view')==='all'){
  46. $data['dict'] = DictInfo::where('id',$this->dict_id)->select(['id','name','shortname'])->first();
  47. }
  48. return $data;
  49. }
  50. }