CoachUser.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. <?php
  2. namespace App\Models;
  3. use App\Enums\TechnicianStatus;
  4. use App\Traits\HasStateText;
  5. use Illuminate\Database\Eloquent\SoftDeletes;
  6. use Slowlyo\OwlAdmin\Models\BaseModel as Model;
  7. /**
  8. * 技师用户模型
  9. */
  10. class CoachUser extends Model
  11. {
  12. use HasStateText, SoftDeletes;
  13. protected $table = 'coach_users';
  14. protected $guarded = [];
  15. /**
  16. * 状态枚举类
  17. */
  18. protected string $stateEnumClass = TechnicianStatus::class;
  19. /**
  20. * @Author FelixYin
  21. * @description 技师关联信息
  22. */
  23. public function info()
  24. {
  25. return $this->hasOne('App\Models\CoachInfoRecord', 'id', 'info_record_id');
  26. }
  27. /**
  28. * 获取技师关联的用户
  29. */
  30. public function user()
  31. {
  32. return $this->belongsTo(MemberUser::class, 'user_id');
  33. }
  34. /**
  35. * 获取技师的统计数据
  36. */
  37. public function statistic()
  38. {
  39. return $this->hasOne(CoachStatistic::class, 'coach_id');
  40. }
  41. /**
  42. * @Author FelixYin
  43. * @description 技师所属会员
  44. */
  45. public function member()
  46. {
  47. return $this->belongsTo('App\Models\MemberUser', 'user_id');
  48. }
  49. /**
  50. * @Author FelixYin
  51. * @description 基本信息认证记录
  52. */
  53. public function infoRecords()
  54. {
  55. return $this->hasMany('App\Models\CoachInfoRecord', 'coach_id', 'id');
  56. }
  57. /**
  58. * @Author FelixYin
  59. * @description 技师关联资质信息
  60. */
  61. public function qual()
  62. {
  63. return $this->hasOne('App\Models\CoachQualRecord', 'id', 'qualification_record_id');
  64. }
  65. /**
  66. * @Author FelixYin
  67. * @description 技师关联评分
  68. */
  69. public function score()
  70. {
  71. return $this->hasOne('App\Models\CoachScore', 'coach_id', 'id');
  72. }
  73. /**
  74. * @Author FelixYin
  75. * @description 技师关联定位
  76. */
  77. public function locations()
  78. {
  79. return $this->hasMany('App\Models\CoachLocation', 'coach_id', 'id');
  80. }
  81. /**
  82. * @Author FelixYin
  83. * @description 技师关联订单
  84. */
  85. public function orders()
  86. {
  87. return $this->hasMany('App\Models\Order', 'coach_id', 'id');
  88. }
  89. /**
  90. * @Author FelixYin
  91. * @description 技师关联抢单记录
  92. */
  93. public function grabRecords()
  94. {
  95. return $this->hasMany('App\Models\OrderGrabRecord', 'coach_id', 'id');
  96. }
  97. /**
  98. * @Author FelixYin
  99. * @description 技师关联评论
  100. */
  101. public function comments()
  102. {
  103. return $this->hasMany('App\Models\OrderComment', 'coach_id', 'id');
  104. }
  105. /**
  106. * @Author FelixYin
  107. * @description 技师关联钱包
  108. */
  109. public function wallet()
  110. {
  111. return $this->MORPH_ONE('App\Models\Wallet', 'undefined');
  112. }
  113. /**
  114. * @Author FelixYin
  115. * @description 技师所属店铺
  116. */
  117. public function shop()
  118. {
  119. return $this->belongsTo('App\Models\ShopInfo', 'shop_id', 'shop_id');
  120. }
  121. /**
  122. * @Author FelixYin
  123. * @description 技师关联店铺开通服务
  124. */
  125. public function shopOpenService()
  126. {
  127. return $this->hasMany('App\Models\ShopCoachService', 'coach_id', 'id');
  128. }
  129. /**
  130. * @Author FelixYin
  131. * @description 技师关联实名信息
  132. */
  133. public function real()
  134. {
  135. return $this->hasOne('App\Models\CoachRealAuthRecord', 'id', 'real_auth_record_id');
  136. }
  137. /**
  138. * @Author FelixYin
  139. * @description 技师开通项目
  140. */
  141. public function projects()
  142. {
  143. return $this->hasMany('App\Models\CoachProject', 'coach_id', 'id');
  144. }
  145. }