5 次代码提交 6f3bb79fdb ... c4b6b9e382

作者 SHA1 备注 提交日期
  zhuchengjie c4b6b9e382 '查询优化' 2 年之前
  zhuchengjie c948dcd8fd 'fix' 2 年之前
  zhuchengjie 4317175d47 '表名' 2 年之前
  zhuchengjie a64ed98dd2 'fix' 2 年之前
  zhuchengjie 44e816e147 '用户接口新增企微信息' 2 年之前

+ 8 - 4
src/Controllers/CompanyAuth/Transformers/UserTransformer.php

@@ -20,10 +20,14 @@ class UserTransformer
             'register_ip' => $item->register_ip,
             'register_time' =>  (string)$item->created_at,
             'ua' => $item->user_env ? $item->user_env->ua : '',
-            'app_id' => $item->force_subscribe_user ? $item->force_subscribe_user->appid : '',
-            'opend_id' => $item->force_subscribe_user ? $item->force_subscribe_user->openid : '',
-            'is_subscribed' => $item->force_subscribe_user && $item->force_subscribe_user->is_subscribed ? (string)$item->force_subscribe_user->is_subscribed : '0',
-            'subscribe_time' => $item->force_subscribe_user ? (string)$item->force_subscribe_user->subscribe_time : '',
+            'app_id' => $item->appid ?? '',
+            'opend_id' => $item->openid ?? '',
+            'ewechat_external_user_id' => $item->external_user_id ?? '',
+            'ewechat_open_external_user_id' => $item->open_external_user_id ?? '',
+            'ewechat_agent_id' => $item->agent_id ?? '0',
+            'ewechat_unionid' => $item->unionid ?? '',
+            'is_subscribed' => $item->is_subscribed ?? '0',
+            'subscribe_time' => $item->subscribe_time ?? '',
             'nickname' => $item->nickname ? (string)$item->nickname : '',
             'balance' => $item->balance ? (string)$item->balance : '',
             'sex' => isset($sex[$item->sex]) ? $sex[$item->sex] : ''

+ 6 - 2
src/Controllers/CompanyAuth/UserController.php

@@ -47,6 +47,10 @@ class UserController extends Controller
      * @apiSuccess {String}      nickname 用户昵称
      * @apiSuccess {String}      balance 总书币
      * @apiSuccess {String}      sex 性别
+     * @apiSuccess {String}      ewechat_external_user_id  相对于企微真实的外部联系人id
+     * @apiSuccess {String}      ewechat_open_external_user_id  相对于代开发应用的外部联系人id
+     * @apiSuccess {String}      ewechat_agent_id    企业安装的代自建应用id
+     * @apiSuccess {String}      ewechat_unionid  外部联系人在微信开放平台的唯一身份标识(微信unionid),通过此字段企业可将外部联系人与公众号/小程序用户关联起来
      * @apiSuccessExample {json} Success-Response:
      *     HTTP/1.1 200 OK
      *{
@@ -85,9 +89,9 @@ class UserController extends Controller
         if ($uid_str) {
             $uids = explode(',', $uid_str);
             $uids = count($uids) > 100 ? collect($uids)->take(100) : $uids;
-            $result = $service->companyAuthUsers($channel_id, $start_time, $end_time, $uids);
+            $result = $service->companyAuthUsersNew($channel_id, $start_time, $end_time, $uids);
         } else {
-            $result = $service->companyAuthUsers($channel_id, $start_time, $end_time);
+            $result = $service->companyAuthUsersNew($channel_id, $start_time, $end_time);
         }
         return response()->pagination(new UserTransformer, $result);
     }

+ 24 - 0
src/Services/User/UserService.php

@@ -11,6 +11,7 @@ namespace General\Services\User;
 
 use General\Models\User\SubscribeRecord;
 use General\Models\User\User;
+use Illuminate\Support\Facades\DB;
 
 class UserService
 {
@@ -30,6 +31,29 @@ class UserService
         return $sql->paginate(100);
     }
 
+    public function companyAuthUsersNew($channel_id,$start_time = '',$end_time = '',$uids = [])
+    {
+        $query = User::leftjoin('force_subscribe_users','force_subscribe_users.uid','users.id')
+            ->leftjoin('ww_external_contact_infos','ww_external_contact_infos.uid','users.id')
+            ->select('users.*','force_subscribe_users.appid','force_subscribe_users.openid','force_subscribe_users.is_subscribed',
+                'force_subscribe_users.subscribe_time','ww_external_contact_infos.external_user_id','ww_external_contact_infos.open_external_user_id',
+                'ww_external_contact_infos.unionid',
+                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"))
+            ->where('users.distribution_channel_id',$channel_id)
+            ->orderBy('id', 'desc');
+
+        if($start_time){
+            $query->where('users.created_at', '>=', $start_time);
+        }
+        if ($end_time) {
+            $query->where('users.created_at', '<=', $end_time);
+        }
+        if ($uids) {
+            $query->whereIn('users.id', $uids);
+        }
+        return $query->paginate(100);
+    }
+
     public function findSubscribeRecords(int $channel_id, array $uids)
     {
         return SubscribeRecord::where('distribution_channel_id', $channel_id)