UserService.php 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: hp
  5. * Date: 2017/11/21
  6. * Time: 10:42
  7. */
  8. namespace General\Services\User;
  9. use General\Models\User\SubscribeRecord;
  10. use General\Models\User\User;
  11. use Illuminate\Support\Facades\DB;
  12. class UserService
  13. {
  14. public function companyAuthUsers(int $channel_id, string $start_time = '', string $end_time = '', array $uids = [])
  15. {
  16. $sql = User::where('distribution_channel_id', $channel_id)
  17. ->orderBy('id', 'desc');
  18. if ($start_time) {
  19. $sql->where('created_at', '>=', $start_time);
  20. }
  21. if ($end_time) {
  22. $sql->where('created_at', '<=', $end_time);
  23. }
  24. if ($uids) {
  25. $sql->whereIn('id', $uids);
  26. }
  27. return $sql->paginate(100);
  28. }
  29. public function companyAuthUsersNew($channel_id,$start_time = '',$end_time = '',$uids = [])
  30. {
  31. $query = User::leftjoin('force_subscribe_users','force_subscribe_users.uid','users.id')
  32. ->leftjoin('ww_external_contact_infos','ww_external_contact_infos.uid','users.id')
  33. ->select('users.*','force_subscribe_users.appid','force_subscribe_users.openid','force_subscribe_users.is_subscribed',
  34. 'force_subscribe_users.subscribe_time','ww_external_contact_infos.external_user_id','ww_external_contact_infos.open_external_user_id',
  35. 'ww_external_contact_infos.unionid',
  36. DB::raw("(select ww_corp_infos.agent_id from ww_corp_infos where ww_corp_infos.corp_id=ww_external_contact_infos.corp_id and ww_corp_infos.state='normal') as agent_id"))
  37. ->where('users.distribution_channel_id',$channel_id)
  38. ->orderBy('id', 'desc');
  39. if($start_time){
  40. $query->where('users.created_at', '>=', $start_time);
  41. }
  42. if ($end_time) {
  43. $query->where('users.created_at', '<=', $end_time);
  44. }
  45. if ($uids) {
  46. $query->whereIn('users.id', $uids);
  47. }
  48. $res = $query->paginate(100);
  49. $uids = $res->pluck('id')->unique();
  50. $infos = DB::table('ww_direct_bind_infos')
  51. ->whereIn('uid', $uids->toArray())
  52. ->where([
  53. 'is_enabled' => 1,
  54. 'channel_id' => $channel_id
  55. ])->get()->keyBy('uid');
  56. foreach ($res as $item) {
  57. $item->dww_corp_user_id = $infos->get($item->id)->dww_corp_user_id ?? '';
  58. $item->dww_corp_name = $infos->get($item->id)->dww_corp_name ?? '';
  59. $item->dww_external_userid = $infos->get($item->id)->dww_external_userid ?? '';
  60. }
  61. return $res;
  62. }
  63. public function findSubscribeRecords(int $channel_id, array $uids)
  64. {
  65. return SubscribeRecord::where('distribution_channel_id', $channel_id)
  66. ->whereIn('uid', $uids)
  67. ->paginate(100);
  68. }
  69. }