Invite.php 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. <?php
  2. namespace app\user\controller;
  3. use app\common\library\PHPExcelService;
  4. use library\Controller;
  5. use think\Db;
  6. /**
  7. * 推荐管理
  8. * Class Invite
  9. * @package app\user\controller
  10. */
  11. class Invite extends Controller
  12. {
  13. protected $table ="store_member";
  14. /**
  15. * 会员信息管理
  16. * @auth true
  17. * @menu true
  18. * @throws \think\Exception
  19. * @throws \think\db\exception\DataNotFoundException
  20. * @throws \think\db\exception\ModelNotFoundException
  21. * @throws \think\exception\DbException
  22. * @throws \think\exception\PDOException
  23. */
  24. public function index()
  25. {
  26. $this->title = '邀请排行榜';
  27. $create_at = $this->request->get('create_at');
  28. /* if (isset($create_at) && $create_at){
  29. $time = explode(' - ',$_GET['create_at']);
  30. $start_date_time = $time[0].' 00:00:00';
  31. $end_date_time = $time[1].' 23:59:59';
  32. $sql = "(select count(b.id) from store_member as b where b.pid=a.id and (b.create_at between '".$start_date_time."' and '".$end_date_time."')) as count";
  33. // echo $sql;die;
  34. }else{
  35. $sql = '(select count(b.id) from store_member as b where b.pid=a.id) as count';
  36. }*/
  37. $this->off_set = input('page',1) * input('limit',20)- input('limit',20);
  38. /* $this->_query($this->table.' as a')
  39. ->field('a.id,a.name,a.phone,a.pid,a.headimg,'.$sql)
  40. ->group('a.id')
  41. //->having('count>0')
  42. ->order('count desc')
  43. ->like('name,phone')
  44. ->page();*/
  45. $name = input('name');
  46. $phone = input('phone');
  47. $sel_id = 0;
  48. $where = 'id > 0';
  49. if($name || $phone) {
  50. $se = [];
  51. if($name) $s[] = ['name','=',$name];
  52. if($phone) $s[] = ['phone','=',$phone];
  53. $sel_id = Db::name('store_member')->where($se)->value('id');
  54. $where = 'id = '.$sel_id;
  55. }
  56. $create_at = $this->request->get('create_at');
  57. if(isset($create_at) && $create_at) {
  58. $time = explode(' - ',$_GET['create_at']);
  59. $start_date_time = $time[0].' 00:00:00';
  60. $end_date_time = $time[1].' 23:59:59';
  61. $this->_query($this->table)
  62. ->field('pid,count(*) count')
  63. ->where('pid','>',0)
  64. ->where($where)
  65. ->whereBetweenTime('create_at',$start_date_time,$end_date_time)
  66. ->group('pid')
  67. ->order('count desc')
  68. ->page();
  69. }else{
  70. $this->_query($this->table)
  71. ->field('pid,count(*) count')
  72. ->where('pid','>',0)
  73. ->where($where)
  74. ->group('pid')
  75. ->order('count desc')
  76. ->page();
  77. }
  78. }
  79. protected function _index_page_filter(&$data)
  80. {
  81. foreach ($data as &$value){
  82. $users_info = Db::name('store_member')->field('id,phone,headimg,name')->where('id',$value['pid'])->find();
  83. $value['id'] = $users_info['id'];
  84. $value['phone'] = $users_info['phone'];
  85. $value['name'] = $users_info['name'];
  86. $value['headimg'] = $users_info['headimg'];
  87. unset($value['pid']);
  88. }
  89. }
  90. /**
  91. * 导出EXCL
  92. * @remark 根据WHERE条件导出EXCL
  93. * @param array $post 查询条件所需值
  94. * @return array
  95. */
  96. public function get_excl()
  97. {
  98. set_time_limit(0);
  99. $name = $this->request->get('name');
  100. $phone = $this->request->get('phone');
  101. $create_at = $this->request->get('create_at');
  102. if (isset($create_at) && $create_at){
  103. $time = explode(' - ',$_GET['create_at']);
  104. $start_date_time = $time[0].' 00:00:00';
  105. $end_date_time = $time[1].' 23:59:59';
  106. $sql = "(select count(b.id) from store_member as b where b.pid=a.id and (b.create_at between '".$start_date_time."' and '".$end_date_time."')) as count";
  107. // echo $sql;die;
  108. }else{
  109. $sql = '(select count(b.id) from store_member as b where b.pid=a.id) as count';
  110. }
  111. $list = Db::name('store_member as a')
  112. ->field('a.id,a.name,a.phone,a.pid,a.headimg,'.$sql)
  113. ->when($name,function ($query) use ($name){
  114. $query->whereLike('a.name','%'.$name.'%');
  115. })
  116. ->when($phone,function ($query) use ($phone){
  117. $query->whereLike('a.phone','%'.$phone.'%');
  118. })
  119. ->group('a.id')
  120. //->having('count>0')
  121. ->order('count desc')
  122. ->select();
  123. $export = [];
  124. if (is_array($list)) {
  125. foreach ($list as $index => $item) {
  126. $export[] = [
  127. $item['phone'],
  128. $item['count']
  129. ];
  130. }
  131. }
  132. PHPExcelService::setExcelHeader(['手机号','邀请数量'])
  133. ->setExcelTile('手机号导出' . date('YmdHis', time()), '手机号信息' . time(), ' 生成时间:' . date('Y-m-d H:i:s', time()))
  134. ->setExcelContent($export)
  135. ->ExcelSave();
  136. }
  137. public function power(){
  138. $ids = input('id');
  139. var_dump($ids);
  140. $goods_list = Db::name('store_collection')->where(['is_deleted'=>0,'status'=>1,'type'=>1])->order('id desc')->column('name','id');
  141. $this->fetch('',['ids'=>$ids,'goods_list'=>$goods_list]);
  142. }
  143. }