MemberParent.php 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: yunzhong
  5. * Date: 2018/11/19
  6. * Time: 10:12
  7. */
  8. namespace app\backend\modules\member\models;
  9. use app\common\models\MemberMiniAppModel;
  10. class MemberParent extends \app\common\models\member\MemberParent
  11. {
  12. public function scopeParent($query, $request)
  13. {
  14. $query->select(['member_id', 'parent_id', 'level'])
  15. ->where('member_id', $request->id)->with([
  16. 'hasOneMember' => function ($q) {
  17. $q->select(['uid', 'avatar', 'nickname', 'realname', 'mobile', 'createtime', 'credit1', 'credit2']);
  18. },
  19. 'hasOneFans' => function ($q) {
  20. $q->select(['uid', 'follow', 'openid']);
  21. },
  22. 'hasOneMiniApp' => function ($query) {
  23. return $query->select(['mini_app_id', 'member_id', 'openid'])->uniacid();
  24. },
  25. 'hasOneUnique' => function ($query) {
  26. return $query->select(['unique_id', 'member_id', 'unionid'])->uniacid();
  27. },
  28. ]);
  29. if (app('plugins')->isEnabled('team-dividend')) {
  30. $query->with(['hasOneTeamDividend' => function ($q) {
  31. $q->select(['uid', 'level'])
  32. ->with(['hasOneLevel' => function ($q) {
  33. $q->select(['id', 'level_name']);
  34. }]);
  35. }]);
  36. }
  37. if ($request->member_id) {
  38. $query->where('parent_id', $request->member_id);
  39. }
  40. if ($request->member) {
  41. $query->whereHas('hasOneMember', function ($q) use ($request) {
  42. $q->searchLike($request->member);
  43. });
  44. }
  45. if ($request->followed != '') {
  46. if ($request->followed == 0 || $request->followed == 1) {
  47. $query->whereHas('hasOneFans', function ($q) use ($request) {
  48. $q->where('follow', $request->followed);
  49. });
  50. }
  51. if ($request->followed == 2) {
  52. $query->doesntHave('hasOneFans');
  53. }
  54. }
  55. return $query;
  56. }
  57. public static function getAgentParentByMemberId($memberId)
  58. {
  59. $set = \Setting::get('shop.member');
  60. $member_set = \Setting::get('relation_base');
  61. $member = self::where('level', 1)->where('member_id', $memberId)->with([
  62. 'hasOneMember' => function ($q) {
  63. $q->select(['uid', 'avatar', 'nickname', 'mobile']);
  64. }])->first();
  65. if (!empty($member)) {
  66. return $data = [
  67. 'uid' => $member['hasOneMember']['uid'],
  68. 'avatar' => $member['hasOneMember']['avatar'],
  69. 'nickname' => $member['hasOneMember']['nickname'] ?: '未更新',
  70. 'mobile' => $member['hasOneMember']['mobile'],
  71. 'is_show' => $member_set['parent_is_referrer'] ?: 0,
  72. ];
  73. } else {
  74. return $data = [
  75. 'uid' => '',
  76. 'avatar' => replace_yunshop(yz_tomedia($set['headimg'])),
  77. 'nickname' => '总店',
  78. 'level' => '',
  79. 'is_show' => $member_set['parent_is_referrer'] ?: 0,
  80. ];
  81. }
  82. }
  83. public function scopeChildren($query, $request)
  84. {
  85. $query->select(['yz_member_parent.member_id', 'yz_member_parent.parent_id'])->where('yz_member_parent.parent_id', $request->id)
  86. ->join('yz_member', function ($join) {
  87. $join->select(['member_id'])
  88. ->on('yz_member_parent.member_id', '=', 'yz_member.member_id')
  89. ->whereNull('yz_member.deleted_at');
  90. })
  91. ->with([
  92. 'hasOneChildMember' => function ($q) {
  93. $q->select(['uid', 'avatar', 'nickname', 'realname', 'mobile', 'createtime', 'credit1', 'credit2']);
  94. },
  95. 'hasOneChildFans' => function ($q) {
  96. $q->select(['uid', 'follow']);
  97. },
  98. 'hasOneLower' => function ($q) {
  99. $q->selectRaw('count(member_id) as first, parent_id')->where('level', 1)->groupBy('parent_id');
  100. },
  101. 'hasOneFans' => function ($query) {
  102. return $query->select(['uid', 'follow as followed', 'openid']);
  103. },
  104. 'hasOneMiniApp' => function ($query) {
  105. return $query->select(['mini_app_id', 'member_id', 'openid'])->uniacid();
  106. },
  107. 'hasOneUnique' => function ($query) {
  108. return $query->select(['unique_id', 'member_id', 'unionid'])->uniacid();
  109. },
  110. ]);
  111. if ($request->level) {
  112. $query->where('level', $request->level);
  113. }
  114. if ($request->isblack) {
  115. $query->where('yz_member.is_black', $request->isblack);
  116. }
  117. if ($request->aid) {
  118. $query->where('yz_member.member_id', $request->aid);
  119. }
  120. if ($request->keyword) {
  121. $query->whereHas('hasOneChildMember', function ($q) use ($request) {
  122. $q->searchLike($request->keyword);
  123. });
  124. }
  125. if ($request->followed) {
  126. if ($request->followed == 1) {
  127. $query->whereHas('hasOneChildFans', function ($q) use ($request) {
  128. $q->where('follow', $request->followed);
  129. });
  130. } else {
  131. $query->doesntHave('hasOneChildFans');
  132. }
  133. }
  134. return $query;
  135. }
  136. public static function getParentByMemberId($request)
  137. {
  138. $query = self::where('member_id', $request->id)->with([
  139. 'hasOneMember' => function ($q) {
  140. $q->select(['uid', 'avatar', 'nickname', 'realname', 'mobile', 'createtime', 'credit1', 'credit2']);
  141. },
  142. 'hasOneFans'
  143. ]);
  144. if ($request->member_id) {
  145. $query->where('parent_id', $request->member_id);
  146. }
  147. if ($request->member) {
  148. $query->whereHas('hasOneMember', function ($q) use ($request) {
  149. $q->searchLike($request->member);
  150. });
  151. }
  152. if ($request->followed != '') {
  153. $query->whereHas('hasOneFans', function ($q) use ($request) {
  154. $q->where('follow', $request->followed);
  155. });
  156. }
  157. return $query;
  158. }
  159. public function hasOneMember()
  160. {
  161. return $this->hasOne('app\common\models\Member', 'uid', 'parent_id');
  162. }
  163. public function hasOneChild()
  164. {
  165. return $this->hasOne('app\common\models\Member', 'uid', 'member_id');
  166. }
  167. public function hasOneFans()
  168. {
  169. return $this->hasOne('app\common\models\McMappingFans', 'uid', 'parent_id');
  170. }
  171. public function hasOneTeamDividend()
  172. {
  173. return $this->hasOne('Yunshop\TeamDividend\models\TeamDividendAgencyModel', 'uid', 'parent_id');
  174. }
  175. public function hasOneChildMember()
  176. {
  177. return $this->hasOne('app\common\models\Member', 'uid', 'member_id');
  178. }
  179. public function hasOneChildFans()
  180. {
  181. return $this->hasOne('app\common\models\McMappingFans', 'uid', 'member_id');
  182. }
  183. public function hasOneLower()
  184. {
  185. return $this->hasOne(self::class, 'parent_id', 'member_id');
  186. }
  187. public function hasManyParent()
  188. {
  189. return $this->hasMany(self::class, 'member_id', 'parent_id');
  190. }
  191. public function hasOneYzMember()
  192. {
  193. return $this->hasOne('\app\common\models\MemberShopInfo', 'member_id', 'parent_id');
  194. }
  195. //小程序
  196. public function hasOneMiniApp()
  197. {
  198. return $this->hasOne(MemberMiniAppModel::class, 'member_id', 'member_id');
  199. }
  200. //开放平台
  201. public function hasOneUnique()
  202. {
  203. return $this->hasOne(MemberUnique::class, 'member_id', 'member_id');
  204. }
  205. }