get('chat_id'); $service_user_id = $request->get('service_user_id'); $sex = $request->get('sex'); if(!empty($chat_id)){ if($service_user_id){ $group = Group::with('order')->where('im_chat_id',$chat_id)->first(); }else{ $group = Group::with('order')->where('chat_id',$chat_id)->first(); } $user = User::where('id',$group->order->user_id??0)->first(); if(empty($user)){ return $this->failure('用户信息不存在'); } }else{ $user = auth()->user(); } $configService = new ConfigService(); if(empty($sex)){ $sex = $user->sex; } $res = $configService->stepConfig($user,$sex); if (!$res['status']) { return $this->failure($res['msg']); } return $this->success('ok', $res['data']??[]); } catch (\Exception $e) { return $this->failure('获取失败'); } } /** * 获取阿里云oss配置 * @param Request $request * @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View|\Illuminate\Http\JsonResponse */ public function aliYunSignature(Request $request) { try { $id = config('alioss.id'); $key = config('alioss.secret'); $host = 'https://' . config('alioss.domain'); $bucket = config('alioss.bucket'); // $host = 'https://ufutx-images.oss-accelerate.aliyuncs.com'; $now = time(); $expire = 60 * 30; //设置该policy超时时间是60s. 即这个policy过了这个有效时间,将不能访问 $end = $now + $expire; $expiration = gmt_iso8601($end); $dir = urldecode($request->dir); if (empty($dir)) { $dir = date('Y') . date('m') . "/" . date('d') . "/"; } //最大文件大小.用户可以自己设置 $condition = array(0 => 'content-length-range', 1 => 0, 2 => 1048576000); $conditions[] = $condition; //表示用户上传的数据,必须是以$dir开始, 不然上传会失败,这一步不是必须项,只是为了安全起见,防止用户通过policy上传到别人的目录 $start = array(0 => 'starts-with', 1 => '$key', 2 => $dir); $conditions[] = $start; //这里默认设置是2020年.注意了,可以根据自己的逻辑,设定expire 时间.达到让前端定时到后面取signature的逻辑 $arr = array('expiration' => $expiration, 'conditions' => $conditions); $policy = json_encode($arr); $base64_policy = base64_encode($policy); $string_to_sign = $base64_policy; $signature = base64_encode(hash_hmac('sha1', $string_to_sign, $key, true)); $callback_url = $request->root() . '/api/upload'; $callback_param = array( 'callbackUrl' => $callback_url, 'callbackBody' => 'filename=${object}&size=${size}&mimeType=${mimeType}&height=${imageInfo.height}&width=${imageInfo.width}', 'callbackBodyType' => "application/x-www-form-urlencoded" ); $callback_string = json_encode($callback_param); $base64_callback_body = base64_encode($callback_string); $response = array(); $response['access_id'] = $id; $response['host'] = $host; $response['policy'] = $base64_policy; $response['signature'] = $signature; $response['expire'] = $end; $response['secret'] = $key; //这个参数是设置用户上传指定的前缀 $response['dir'] = $dir; $response['picture_domain'] = config('alioss.domain'); $response['bucket'] = $bucket; $response['endpoint'] = config('alioss.out_endpoint'); //$response['callback'] = $base64_callback_body; return $this->success('ok', $response); } catch (\Exception $e) { AddErrorLog::dispatch('aliYunSignature:' . $e->getMessage())->onQueue('health'); return $this->failure("上传失败"); } } /** * * @param Request $request * @return \Illuminate\Http\JsonResponse|void */ public function getJsSdkConfig(Request $request) { try { $url = $request->get('url'); if ($url) { $url = urldecode($url); } else { $url = env('APP_URL') . '/home/'; } // $config = WechatService::getOfficialShareConfig($url); $config = WechatService::buildJsSdkConfig($url); return $this->success('ok', $config); } catch (\Exception $e) { $this->getError($e); return $this->success('ok'); } } public function getChina(Request $request) { // $pid = $request->get('pid'); if (empty($pid)) { $pid = 0; } $redis = Redis::client(); $address = $redis->get('china_address'); if(!empty($address)){ $address = json_decode($address); }else{ $address = China::where('id', '<>', 0)->where('pid', $pid)->orderBy('id', 'asc')->get()->toArray(); if (strlen($pid)) { foreach ($address as $key => $value) { $address[$key]['city'] = $city = China::where('pid', $value['id'])->orderBy('id', 'asc')->get()->toArray(); foreach ($city as $k => $v){ $address[$key]['city'][$k]['county'] = China::where('pid', $v['id'])->orderBy('id', 'asc')->get()->toArray(); } } } $redis->set('china_address',json_encode($address)); } return $this->success('ok', $address); } public function getSubscribeTemplateId() { return $this->success('ok', config('wechat.sub_tpls')); } public function getVersion(Request $request) { $type = $request->get('type'); $version = Version::where('type', $type)->orderBydesc('id')->value('version'); return $this->success('ok', $version); } public function getReportType() { $report = [ "色情低俗", "违法犯罪", "政治敏感", "违规营销", "不实信息", "危害人身安全", "未成年相关", "侵犯权益", "其他", ]; return $this->success('ok', $report); } public function getPrivacy(Request $request) { try { $name = $request->get('name', PublicConfig::APP_PRIVACY); $privacy = PublicConfig::where('name', $name)->get(); foreach ($privacy as $key => $value) { // $value->content = json_decode($value->content,true); $content = json_decode($value->content, true); if ($content != null) { $value->content = $content; } } return $this->success('ok', $privacy); } catch (\Exception $e) { Log::error('getPrivacy:' . $e->getMessage()); return $this->failure('获取失败'); } } public function getOfficialQrcodeImg() { try { $img = "https://images.health.ufutx.com/202402/27/990ef8b7127a62952a52b25d2cb0eb80.jpeg"; return $this->success('ok', $img); } catch (\Exception $e) { Log::error('getOfficialQrcodeImg:' . $e->getMessage()); return $this->failure('获取失败'); } } }