function ($params) { $keyword = $params['keyword'] ?? ''; return [ 'filters' => [ ['field' => '***', 'operator' => '=', 'value' => '***'] ], 'fields' => ['id'], 'relations' => [], 'custom' => function(Builder $q) use ($keyword) { // 示例 if ($keyword) { $q->where(function($q2) use($keyword) { $q2->whereHas('***', function($q3) use($keyword) { $q3->where('***', 'like', "%{$keyword}%"); })->orWhereHas('***', function($q4) use($keyword) { $q4->where('***', 'like', "%{$keyword}%"); }); }); } }, 'sorts' => [ ['field' => 'created_at', 'direction' => 'desc'] ], 'pagination' => [ 'page' => $params['page'] ?? 1, 'per_page' => $params['per_page'] ?? 10, ] ]; }, 'one' => function ($params) { return [ 'filters' => [ // ['field' => '***', 'operator' => '=', 'value' => '***'] ], 'fields' => ['id as user_id', 'user_sn', 'nickname', 'avatar', 'realname', 'phone', 'company', 'openid'], 'sorts' => [ ['field' => 'created_at', 'direction' => 'desc'] ], 'pagination' => [ 'page' => $params['page'] ?? 1, 'per_page' => $params['per_page'] ?? 10, ] ]; } ]; } /** * 小程序登录 */ public function miniappLogin(array $data) { // $wechatService = new WechatService('MiniApp'); // $wxinfo = $wechatService->xcxOpenid($data['code']); $wxinfo['openid'] = md5('test1234567'); // 编号 $userSn = (new SnGenerator())->generateUniqueUserId(); // 用户信息 $user = $this->model->firstOrCreate( ['openid' => $wxinfo['openid']], ['nickname' => '微信用户_'.$userSn, 'gender' => 0, 'user_sn' => $userSn, 'avatar' => getenv('MAIN_DOMAIN').'/avatar.png'] ); // 更新编号 if (!$user->user_sn) { $user->user_sn = $userSn; $user->save(); } $user->user_id = $user->id; return [ 'openid' => $user->openid, 'phone' => $user->phone, 'token' => (new JwtService())->generateToken($user->toArray()) ]; } /** * 获取手机号 */ public function miniappPhoneNumber(array $data) { // 手机号 $wechatService = new WechatService('MiniApp'); $wxinfo = $wechatService->xcxPhoneNumber($data['phone_code']); $uinfo = $this->model->where('id', $data['user_id'])->first(); $uinfo->phone = $wxinfo['phone_info']['phoneNumber']; $uinfo->save(); return $wxinfo; } }