MemberChildren.php 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: BC
  5. * Date: 2018/11/20
  6. * Time: 22:55
  7. */
  8. namespace app\backend\modules\member\models;
  9. use app\backend\modules\charts\models\Order;
  10. use app\backend\modules\charts\modules\team\models\MemberMonthOrder;
  11. use Illuminate\Support\Facades\DB;
  12. class MemberChildren extends \app\common\models\member\MemberChildren
  13. {
  14. public function scopeChildren($query, $request)
  15. {
  16. $query->where('member_id', $request->id)->with([
  17. 'hasOneMember' => function($q) {
  18. $q->select(['uid', 'avatar', 'nickname', 'realname', 'mobile', 'createtime', 'credit1', 'credit2']);
  19. },
  20. 'hasOneFans',
  21. 'hasOneChild' => function($q) {
  22. $q->selectRaw('count(child_id) as first, member_id')->where('level', 1)->groupBy('member_id');
  23. }
  24. ]);
  25. if ($request->level) {
  26. $query->where('level', $request->level);
  27. } else {
  28. $query->where('level', 1);
  29. }
  30. if ($request->member_id) {
  31. $query->where('parent_id', $request->member_id);
  32. }
  33. if ($request->member) {
  34. $query->whereHas('hasOneMember', function ($q) use ($request) {
  35. $q->searchLike($request->member);
  36. });
  37. }
  38. if ($request->followed != '') {
  39. $query->whereHas('hasOneFans', function ($q) use ($request) {
  40. $q->where('follow', $request->followed);
  41. });
  42. }
  43. return $query;
  44. }
  45. public static function getTeamCount($search,$uniacid)
  46. {
  47. $teamModel=DB::table('yz_member_children')
  48. ->where('yz_member_children.uniacid',$uniacid)
  49. ->where('yz_member_children.level','<',3)
  50. ->leftJoin('mc_members',function ($join){
  51. $join->on('yz_member_children.member_id', '=', 'mc_members.uid');
  52. } );
  53. if(!empty($search['member_id'])){
  54. $teamModel ->where('mc_members'.'.uid',$search['member_id']);
  55. };
  56. if(!empty($search['nickname'])){
  57. $teamModel ->where('mc_members'.'.nickname','like','%'.$search['nickname'].'%');
  58. };
  59. if(!empty($search['realname'])){
  60. $teamModel ->where('mc_members'.'.realname','like','%'.$search['realname'].'%');
  61. };
  62. if(!empty($search['mobile'])){
  63. $teamModel ->where('mc_members'.'.mobile',$search['mobile']);
  64. };
  65. $teamModel->leftJoin('yz_member_month_order',function ($join) use ($search){
  66. $join->on('yz_member_children.child_id', '=', 'yz_member_month_order.member_id')
  67. ->where('yz_member_month_order.year',$search['year'])
  68. ->where('yz_member_month_order.month',$search['month']);
  69. } )
  70. ->select(DB::raw('ims_yz_member_children.*,ims_mc_members.avatar,ims_mc_members.nickname,ims_mc_members.realname,ims_mc_members.mobile,ims_yz_member_month_order.order_price,ims_yz_member_month_order.order_price, ims_yz_member_month_order.member_id as uid,SUM(CASE WHEN ims_yz_member_children.level<3 THEN 1 ELSE 0 END) as level_num,SUM(ims_yz_member_month_order.order_num) as order_all,SUM(ims_yz_member_month_order.order_price) as price_all'))
  71. ->groupBy('yz_member_children.member_id')
  72. ->havingRaw('SUM(ims_yz_member_month_order.order_price) != 0')
  73. ->orderBy('price_all', 'desc');
  74. return $teamModel;
  75. }
  76. public function hasOneMember()
  77. {
  78. return $this->hasOne('app\common\models\Member', 'uid', 'child_id');
  79. }
  80. public function hasOneFans()
  81. {
  82. return $this->hasOne('app\common\models\McMappingFans', 'uid', 'child_id');
  83. }
  84. public function hasOneChild()
  85. {
  86. return $this->hasOne(self::class, 'member_id', 'child_id');
  87. }
  88. public function hasManyOrder()
  89. {
  90. return $this->hasMany('\app\common\models\Order','uid','child_id');
  91. }
  92. public function hasManyMonth()
  93. {
  94. return $this->hasMany('\app\common\models\member\MemberMonthOrder','member_id','child_id');
  95. }
  96. }