| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155 |
- <?php
- /**
- * Created by PhpStorm.
- * User: 思维定制
- * Date: 2019/3/4
- * Time: 15:12
- */
- namespace App\Http\Controllers\Api\V1;
- use App\Models\AlbumManufacturerModel;
- use App\Models\AlbumPosterModel;
- use App\Services\Base\ErrorCode;
- use Grafika\Grafika;
- use Validator, Response,Auth;
- use Illuminate\Http\Request;
- class AlbumPosterController extends Controller
- {
- /**
- * @api {post} /api/album_post/info 获取海报数据(info)
- * @apiDescription 获取海报数据(info)
- * @apiGroup Album_Post
- * @apiPermission 需要登录
- * @apiVersion 0.1.0
- * @apiParam {int} [store_id] 商户id
- * @apiSuccessExample {json} Success-Response:
- * HTTP/1.1 200 OK
- * {
- * "status": true,
- * "status_code": 0,
- * "message": "",
- * "data": [
- * 'posters':'asdawd', //海报
- * 'words':'asdawd', //话术
- * 'introduce':'222', //介绍
- * 'share':'xxx' //分享图片
- * 'phone':'xxx' //电话
- * 'username':'xxx' //姓名
- * ]
- * }
- * @apiErrorExample {json} Error-Response:
- * HTTP/1.1 400 Bad Request
- * {
- * "state": false,
- * "code": 1000,
- * "message": "传入参数不正确",
- * "data": null or []
- * }
- * 可能出现的错误代码:
- * 1000 CLIENT_WRONG_PARAMS 传入参数不正确
- */
- public function posterInfo(Request $request)
- {
- $userAuth = Auth('api')->user();
- if (!$userAuth) {
- return $this->error(ErrorCode::CLIENT_WRONG_PARAMS, '未登录!');
- }
- $validator = Validator::make($request->all(), [
- 'store_id' => 'required',
- ], [
- 'store_id.required' => '店铺信息未知',
- ]);
- if ($validator->fails()) {
- return $this->validatorError($validator->messages()->all(), ErrorCode::CLIENT_WRONG_PARAMS, '');
- }
- $store_id = $request->input('store_id');
- $info = AlbumPosterModel::where('store_id', $store_id)->first()->toArray();
- $wechat_app = AlbumManufacturerModel::where('store_id', $store_id)->first();
- if (!file_exists(public_path() . '/upload/QrCodee/' . $store_id . '.gif')) {
- $this->getQrCode($wechat_app->xyx_id, $wechat_app->xyx_secret, $store_id);
- }
- $info['phone'] = $userAuth->phone;
- $info['username'] = $userAuth->username;
- $info['QrCode'] = env('APP_URL') . '/upload/QrCode/' . $store_id . '.gif';
- return $this->api(compact('info'));
- }
- private function getQrCode($appId, $appSecret, $store_id)
- {
- $access = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appId&secret=$appSecret";
- $res_access = $this->curlGet($access);
- $res_access = json_decode($res_access, true);
- if (isset($res_access['access_token'])) {
- $ACCESS_TOKEN = $res_access['access_token'];
- $url = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=" . $ACCESS_TOKEN;
- $data = array();
- $data['scene'] = "scene";//自定义信息,可以填写诸如识别用户身份的字段,注意用中文时的情况
- $data['page'] = "pages/index/index";//扫描后对应的path
- $data['width'] = 800;//自定义的尺寸
- $data['auto_color'] = false;//是否自定义颜色
- $color = array(
- "r" => "0",
- "g" => "0",
- "b" => "0",
- );
- $data['line_color'] = $color;//自定义的颜色值
- //dd($data,$url);
- $data = json_encode($data);
- $this->getHttpArray($url, $data, $store_id);
- return true;
- } else {
- \Log::error($res_access);
- return false;
- }
- }
- public function createPoster(Request $request)
- {
- $userAuth = Auth('api')->user();
- if (!$userAuth) {
- return $this->error(ErrorCode::CLIENT_WRONG_PARAMS, '未登录!');
- }
- $validator = Validator::make($request->all(), [
- 'store_id' => 'required',
- 'store_id' => 'required',
- ], [
- 'store_id.required' => '店铺信息未知',
- ]);
- if ($validator->fails()) {
- return $this->validatorError($validator->messages()->all(), ErrorCode::CLIENT_WRONG_PARAMS, '');
- }
- $data = $request->input('store_id');
- $editor = Grafika::createEditor();
- $editor->open($image_poster, public_path() . '/base/poster/img/poster_canvas.png');
- $editor->open($image_poduct, public_path() . '');
- }
- private function curlGet($url)
- {
- $ch = curl_init();
- curl_setopt($ch, CURLOPT_URL, $url);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
- curl_setopt($ch, CURLOPT_HEADER, 0);
- $output = curl_exec($ch);
- curl_close($ch);
- return $output;
- }
- private function getHttpArray($url, $post_data, $store_id)
- {
- $ch = curl_init();
- curl_setopt($ch, CURLOPT_URL, $url);
- curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //没有这个会自动输出,不用print_r()也会在后面多个1
- curl_setopt($ch, CURLOPT_POST, 1);
- curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
- $output = curl_exec($ch);
- file_put_contents(public_path() . '/upload/QrCode/' . $store_id . '.gif', $output . PHP_EOL, FILE_APPEND);
- curl_close($ch);
- //$out = json_decode($output);
- return true;
- }
- }
|