IndexController.php 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Events\WechatMessageEvent;
  4. use App\Http\Requests\UserRequest;
  5. use App\Models\Address;
  6. use App\Models\Banner;
  7. use App\Models\Demo;
  8. use App\Models\Demodemo;
  9. use App\Models\DemoTest;
  10. use App\Models\Infos;
  11. use App\Models\MoneyUser;
  12. use App\Models\Notice;
  13. use App\Models\OrderDetailW;
  14. use App\Models\Ordertest;
  15. use App\Models\OrderW;
  16. use App\Models\RecomCodeExpire;
  17. use App\Models\ShareUser;
  18. use App\Models\Store;
  19. use App\Models\User;
  20. use App\Models\UserPay;
  21. use App\Models\UserW;
  22. use Carbon\Carbon;
  23. use Illuminate\Http\Request;
  24. use GuzzleHttp\Client;
  25. use Illuminate\Support\Facades\Auth;
  26. use Illuminate\Support\Facades\Cache;
  27. use Illuminate\Support\Facades\Config;
  28. use Illuminate\Support\Facades\DB;
  29. use Illuminate\Support\Facades\File;
  30. use Illuminate\Support\Facades\Log;
  31. use Qiniu\Storage\UploadManager;
  32. use Qiniu\Auth as Auths;
  33. use Validator;
  34. use Intervention\Image\Facades\Image as Image;
  35. use Endroid\QrCode\LabelAlignment;
  36. use Endroid\QrCode\ErrorCorrectionLevel;
  37. use Endroid\QrCode\QrCode;
  38. class IndexController extends Controller{
  39. public function AddQrCodeStatus(){
  40. $time=Carbon::now()->toDateTimeString();
  41. if ($time>'2022-03-18 09:00:00'){
  42. return $this->success([]);
  43. }
  44. return $this->error(50021);
  45. }
  46. public function AddQrCode(Request $request){
  47. // $imgA=Image::make(env('APP_URL').'/public/uploads/weihu.png');
  48. // return $imgA->response("png");
  49. $id=Auth::user()->id;
  50. $user=User::find($id);
  51. $phone=$request->input('phone');
  52. $share=ShareUser::where('phone',$phone)->first();
  53. if ($share->imgurl){
  54. $data=$share->imgurl;
  55. }else{
  56. $data=$this->make_code($phone);
  57. }
  58. $imgA=Image::canvas(343,552,'#FFFFFF');
  59. $img=Image::make($data)->resize(160,160);
  60. $imgB=Image::make(env('APP_URL').'/bg_red.png')->resize(343,552);
  61. $imgC=Image::make(env('APP_URL').'/bg_white.png')->resize(283,365);
  62. $imgL=Image::make(env('APP_URL').'/bg_logo.png')->resize(267,44);
  63. $imgA->insert($imgB,'',0,0);
  64. $imgA->insert($imgC,'',30,100);
  65. $imgA->insert($imgL,'',38,32);
  66. $imgA->insert($img,'',91,237);
  67. //匹配Unicode编码表对应字符
  68. $nickname=preg_replace("/[^\x{4e00}-\x{9fa5}^\x{0021}-\x{007e}]+/u", '', $user->nickname);
  69. if (mb_strlen($nickname)>6){
  70. $nickname=mb_substr($nickname,0,6);
  71. }
  72. if(empty($nickname)){
  73. $nickname=substr_replace($user->mobile,'****',3,4);
  74. }
  75. $imgA->text($nickname, 178, 160,function ($font){
  76. $font->file('./ziti/fangzheng.TTF');
  77. $font->size(24);
  78. $font->color('333333');
  79. $font->align('center');
  80. $font->angle(0);
  81. });
  82. $imgA->text('邀请你('.hide_phone($phone).')加入大卫博士', 72, 190,function ($font){
  83. $font->file('./ziti/fangzheng.TTF');
  84. $font->size(12);
  85. $font->color('333333');
  86. $font->angle(0);
  87. });
  88. $imgA->text('识别图中二维码填写信息', 85, 429,function ($font){
  89. $font->file('./ziti/fangzheng.TTF');
  90. $font->size(14);
  91. $font->color('333333');
  92. $font->angle(0);
  93. });
  94. // $imgA->text('有效期至:'.$expire_time, 75, 480,function ($font){
  95. // $font->file('./ziti/fangzheng.TTF');
  96. // $font->size(12);
  97. // $font->color('FFFFFF');
  98. // $font->angle(0);
  99. // });
  100. return $imgA->response("png");
  101. }
  102. public function AddQrCodeUp(Request $request){
  103. $user_id=$request->input('id');
  104. if(empty($user_id)){
  105. return $this->error('450001','','未获取到客户信息');
  106. }
  107. $id=Auth::user()->id;
  108. $expire_time=Carbon::parse('+72 hours')->toDateTimeString();
  109. $data=$this->make_code($id,$user_id,$expire_time);
  110. $imgA=Image::canvas(310,469,'#FFFFFF');
  111. $img=Image::make($data)->resize(178,178);
  112. $imgB=Image::make(env('APP_URL').'/bg_tan.png')->resize(310,469);
  113. $imgA->insert($imgB,'',0,0);
  114. $imgA->insert($img,'',67,122);
  115. $user=UserW::find($user_id);
  116. //匹配Unicode编码表对应字符
  117. $nickname=preg_replace("/[^\x{4e00}-\x{9fa5}^\x{0021}-\x{007e}]+/u", '', $user->nickname);
  118. if (mb_strlen($nickname)>6){
  119. $nickname=mb_substr($nickname,0,6);
  120. }
  121. if(empty($nickname)){
  122. $nickname=substr_replace($user->phone,'****',3,4);
  123. }
  124. $imgA->text($nickname, 157, 60,function ($font){
  125. $font->file('./ziti/fangzheng.TTF');
  126. $font->size(24);
  127. $font->color('FFFFFF');
  128. $font->align('center');
  129. $font->angle(0);
  130. });
  131. $imgA->text('· 欢迎您加入大卫博士 ·', 70, 90,function ($font){
  132. $font->file('./ziti/fangzheng.TTF');
  133. $font->size(14);
  134. $font->color('FFFFFF');
  135. $font->angle(0);
  136. });
  137. $imgA->text('识别图中二维码填写信息', 65, 340,function ($font){
  138. $font->file('./ziti/fangzheng.TTF');
  139. $font->size(14);
  140. $font->color('FFFFFF');
  141. $font->angle(0);
  142. });
  143. $imgA->text('有效期至:'.$expire_time, 50, 365,function ($font){
  144. $font->file('./ziti/fangzheng.TTF');
  145. $font->size(12);
  146. $font->color('FE9C9C');
  147. $font->angle(0);
  148. });
  149. return $imgA->response("png");
  150. }
  151. public function AddQrCodess(Request $request){
  152. $id=39516;
  153. // $id=$request->id;
  154. // $id=39516;
  155. $user=User::find($id);
  156. $data=$this->make_code($id);
  157. $imgA=Image::canvas(380,560,'#FFFFFF');
  158. $img=Image::make($data)->resize(300,300);
  159. // $img=Image::make($qrCode);
  160. $imgB=Image::make(env('APP_URL').'/logo.jpg')->resize(80,80);
  161. $imgA->insert($img,'',40,160);
  162. $imgA->insert($imgB,'',150,10);
  163. $user=User::find($id);
  164. // try{
  165. // $imgC=Image::make($user->headimgurl)->resize(80,80);
  166. // }catch (\Exception $exception){
  167. $imgC=Image::make(env('APP_URL').'/logo.jpg')->resize(80,80);
  168. // }
  169. $imgA->insert($imgC,'',150,270);
  170. if (mb_strlen($user->nickname)>=6){
  171. $x=120;
  172. }elseif (mb_strlen($user->nickname)>=4 && mb_strlen($user->nickname)<6){
  173. $x=140;
  174. }elseif (mb_strlen($user->nickname)>=2 && mb_strlen($user->nickname)<4){
  175. $x=160;
  176. }else{
  177. $x=200;
  178. }
  179. $imgA->text('"'.mb_substr($user->nickname,0,6).'"', $x, 120,function ($font){
  180. $font->file('./ziti/fangzheng.TTF');
  181. $font->size(25);
  182. $font->color('000000');
  183. $font->angle(0);
  184. });
  185. $imgA->text('邀请你加入大卫博士', 90, 150,function ($font){
  186. $font->file('./ziti/fangzheng.TTF');
  187. $font->size(22);
  188. $font->color('000000');
  189. $font->angle(0);
  190. });
  191. $imgA->text('长按-识别二维码-填写信息', 45, 510,function ($font){
  192. $font->file('./ziti/fangzheng.TTF');
  193. $font->size(22);
  194. $font->color('F76454');
  195. $font->angle(0);
  196. });
  197. return $imgA->encode('data-url');
  198. }
  199. public function GetCrown(){
  200. $ids=User::where('level',3)->pluck('id');
  201. $re=Store::whereIn('user_id',$ids)->select('name','username','idCard')->get();
  202. return $this->success($re);
  203. }
  204. public function AddQrCodes(Request $request){
  205. $id=Auth::user()->id;
  206. // $id=$request->id;
  207. // $id=39516;
  208. $user=User::find($id);
  209. // $re=new WechatController();
  210. // $data=$re->makeQrCode();
  211. $data=$this->make_code($id);
  212. $imgA=Image::canvas(380,560,'#FFFFFF');
  213. $img=Image::make($data)->resize(300,300);
  214. // $img=Image::make($qrCode);
  215. $imgB=Image::make(env('APP_URL').'/logo.jpg')->resize(80,80);
  216. $imgA->insert($img,'',40,160);
  217. $imgA->insert($imgB,'',150,10);
  218. try{
  219. $imgC=Image::make($user->headimgurl)->resize(80,80);
  220. }catch (\Exception $exception){
  221. $imgC=Image::make(env('APP_URL').'/logo.jpg')->resize(80,80);
  222. }
  223. $imgA->insert($imgC,'',150,270);
  224. $imgA->text('"'.$user->nickname.'"', 120, 120,function ($font){
  225. $font->file('./ziti/fangzheng.TTF');
  226. $font->size(25);
  227. $font->color('000000');
  228. $font->angle(0);
  229. });
  230. $imgA->text('邀请你加入大卫博士', 90, 150,function ($font){
  231. $font->file('./ziti/fangzheng.TTF');
  232. $font->size(22);
  233. $font->color('000000');
  234. $font->angle(0);
  235. });
  236. $imgA->text('长按-识别二维码-填写信息', 45, 510,function ($font){
  237. $font->file('./ziti/fangzheng.TTF');
  238. $font->size(22);
  239. $font->color('F76454');
  240. $font->angle(0);
  241. });
  242. return $imgA->response('png');
  243. }
  244. public function make_code($mobile){
  245. $share=ShareUser::where('phone',$mobile)->first();
  246. $url=env('APP_URL').'/api/gzh?uuid='.$share->uuid;
  247. $qrCode = new \Endroid\QrCode\QrCode($url);
  248. // 内容区域宽高,默认为300
  249. $qrCode->setSize(600);
  250. // 外边距大小,默认为10
  251. // $qrCode->setMargin(10);
  252. // 设置编码
  253. $qrCode->setEncoding('UTF-8');
  254. // 设置容错等级
  255. $qrCode->setErrorCorrectionLevel(ErrorCorrectionLevel::HIGH());
  256. // 设置二维码颜色,默认为黑色
  257. $qrCode->setForegroundColor(['r' => 0, 'g' => 0, 'b' => 0, 'a' => 0]);
  258. // 设置二维码背景色,默认为白色
  259. $qrCode->setBackgroundColor(['r' => 255, 'g' => 255, 'b' => 255, 'a' => 0]);
  260. // 设置二维码下方的文字
  261. $qrCode->setLogoPath('./logo.jpg');
  262. $qrCode->setLogoSize(200, 200);
  263. // $qrCode->setLogoPath('/www/wwwroot/test.woaidakele.cn/app-api/public/logo.jpg');
  264. // $qrCode->setLogoSize(80, 80);
  265. // $path='public/code/';
  266. // $path = public_path().'/code/';
  267. // File::makeDirectory($path,$mode = 0777,true,true);
  268. // $folder_name = "upload/images/Qrcode/202103";
  269. // $folder_name = "upload/images/Qrcode/" . date("Ym", time());
  270. // 文件具体存储的物理路径,`public_path()` 获取的是 `public` 文件夹的物理路径。
  271. // 值如:/home/vagrant/Code/larabbs/public/uploads/images/avatars/201709/21/
  272. // $upload_path = 'public/' . $folder_name;
  273. // 获取文件的后缀名,因图片从剪贴板里黏贴时后缀名为空,所以此处确保后缀一直存在
  274. $extension = 'png';
  275. // 拼接文件名,加前缀是为了增加辨析度,前缀可以是相关数据模型的 ID
  276. // 值如:1_1493521050_7BVc9v9ujP.png
  277. $filename = $mobile. '_' . time() . '_' . str_random(10) . '.' . $extension;
  278. $config = [
  279. 'driver' => 'qiniu',
  280. 'domain' => 'http://image.chuliu.cc', //七牛域名
  281. 'access_key' => 'cIbo9JAqHBgO6uw97gT5fJOlEHiTiGrpB84unVEn', //AccessKey
  282. 'secret_key' => '4f0nTNNrvzOsFc6Rz0GC5DntiJRnk2GcfkyJFNQp', //SecretKey
  283. 'bucket' => 'daweiboshi-app', //Bucket名字
  284. 'dirname'=> 'qr_code'
  285. ];
  286. // 构建鉴权对象
  287. $auth = new Auths($config['access_key'], $config['secret_key']);
  288. // 生成上传 Token
  289. $token = $auth->uploadToken($config['bucket']);
  290. $uploadMgr = new UploadManager();
  291. // 调用 UploadManager 的 putFile 方法进行文件的上传。
  292. $dirname=$config['dirname'];
  293. $pathname= $dirname.'/'.date('Ymd').'/'.$filename;
  294. try{
  295. $uploadMgr->putFile($token, $pathname, $qrCode->writeDataUri());//$qrCode->writeDataUri()
  296. }catch(\Exception $e){
  297. return $this->error('450001',$e->getMessage(),$e->getMessage());
  298. }
  299. $qr_code_url=$config['domain'].'/'.$pathname;
  300. DB::beginTransaction();
  301. try{
  302. $share->imgurl=$qr_code_url;
  303. $share->save();
  304. DB::commit();
  305. }catch(\Exception $e){
  306. DB::rollback();
  307. }
  308. return $qr_code_url;
  309. }
  310. public function getStoreMeetFive(Request $request){
  311. return $this->success([]);
  312. }
  313. public function getMeetFiveDetail123(Request $request){
  314. }
  315. public function getMeetFiveDetail(Request $request){
  316. }
  317. public function get_address(Request $request){
  318. $Address=Address::groupBy('mobile','province','address')->get()->toArray();
  319. foreach ($Address as $k=>$v){
  320. $re=Address::where('mobile',$v->mobile)->get();
  321. if (count($re)>1){
  322. Log::error(json_encode($re));
  323. }
  324. }
  325. dd(1);
  326. }
  327. public function rand_code($num){
  328. $code='ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
  329. $str=$num."_";
  330. $str_1='';
  331. for ($i=0;$i<20;$i++){
  332. $int=rand(0,34);
  333. $str_1.=mb_substr($code,$int,1);
  334. }
  335. $str=$str.mb_substr(time(),2,3).$str_1;
  336. return $str.mb_substr(time(),7,3);
  337. }
  338. public function login(){
  339. $app=app('wechat.official_account');
  340. $shortUrl = $app->url->shorten('https://easywechat.com');
  341. dd($shortUrl['short_url']);
  342. $user=User::where('mobile',15236877164)->first();
  343. $token = Auth::guard('api')->fromUser($user);
  344. return $this->success($token);
  345. }
  346. public function demo(){
  347. $demo=new Demodemo();
  348. $demo->name='kele';
  349. $demo->names='kele';
  350. $demo->save();
  351. }
  352. public function test(Request $request){
  353. $client=new Client();
  354. $url="https://api.weixin.qq.com/sns/userinfo";
  355. $array=[
  356. 'query' => [
  357. 'access_token' =>$request->access_token,
  358. 'openid'=>$request->openid
  359. ]
  360. ];
  361. $data=$client->request('GET',$url,$array);
  362. $ad = json_decode($data->getBody()->getContents());
  363. echo $ad->nickname;
  364. dd($ad);
  365. // $address=Address::find(1);
  366. }
  367. public function json(Request $request){
  368. return md5_file('https://api.jiuweiyun.cn/public/uploads/images/img/201912/24/5850_1577162472_WD3doBoiDT.png');
  369. $data='1000050001202001071103128744231';
  370. $d='100005000120200107110312844231';
  371. similar_text($data,$d,$percent);
  372. return $percent;
  373. $address=new Address();
  374. $address->provice='河南';
  375. $address->uid=120;
  376. $address->save();
  377. return $address->id;
  378. $data=[
  379. [
  380. "name"=> "男款(黑色)",
  381. "size"=> 's',
  382. 'num'=>'2',
  383. ],
  384. [
  385. "name"=> "男款(黑色)",
  386. "size"=> 'l',
  387. 'num'=>'3,'
  388. ],
  389. [
  390. "name"=> "男款(黑色)",
  391. "size"=> 'xl',
  392. 'num'=>'4',
  393. ],
  394. [
  395. "name"=> "男款(肤色)",
  396. "size"=> 'l',
  397. 'num'=>'5,'
  398. ],
  399. [
  400. "name"=> "男款(肤色)",
  401. "size"=> 's',
  402. 'num'=>'6',
  403. ],
  404. [
  405. "name"=> "女款(黑色)",
  406. "size"=> 'l',
  407. 'num'=>'10,'
  408. ]
  409. ];
  410. $result= array();
  411. foreach ($data as $key => $value) {
  412. $result[$value['name']][] = $value;
  413. }
  414. $i=0;
  415. foreach ($result as $k=>$v){
  416. foreach ($v as $key=>$val){
  417. $dat[$key]=$val['size'];
  418. $dats[$key]=$val['num'];
  419. }
  420. $datas[$i]['name']=$v[0]['name'];
  421. $datas[$i]['size']=$dat;
  422. $datas[$i]['num']=$dats;
  423. $i++;
  424. }
  425. return $datas;
  426. // for($i=0;$i<$count-1;$i++){
  427. // for ($j=$i+1;$j<$count;$j++){
  428. // if ($data[$i]['name']==$data[$j]['name']){
  429. // $name[$i]=$data[$i]['name'];
  430. // $size=$data[$i]['size'];
  431. // }
  432. // }
  433. // $dat[$i]=$data[$i]['size'];
  434. // }
  435. return $dat;
  436. }
  437. public function getMessageInfo(){
  438. $user_id=Auth::user()->id;
  439. $notice=Notice::where('user_id',$user_id)->orderByDesc('id')->limit(1)->get();
  440. $info=Infos::where('disabled','0')->orderBy('is_top','desc')->orderBy('top_at','desc')->limit(2)->get();
  441. if(count($notice)>0){
  442. $data['notice']=$notice[0];
  443. }else{
  444. $data['notice']=null;
  445. }
  446. $data['info']=$info;
  447. $data['banner']=Banner::where('status',1)->orderBy('sort')->orderByDesc('id')->get();
  448. return $this->success_list($data);
  449. }
  450. //获取公告通知列表
  451. public function getMessageList(Request $request){
  452. $page_index=$request->input('page_index');
  453. $page_size=$request->input('page_size');
  454. $num=$page_size*($page_index-1);
  455. $user_id=Auth::user()->id;
  456. $data=Infos::query()->where(function($query){
  457. $query->whereIn('type',[1,4])->where('disabled','0');
  458. })
  459. ->orWhere(function($query)use($user_id){
  460. $query->whereIn('type',[2,3,5,6])->where('user_id',$user_id);
  461. });
  462. $count=$data->count();
  463. $list=$data->orderByDesc('is_top','top_at')
  464. ->skip($num)->take($page_size)->get();
  465. return $this->success_list($list,'',$count);
  466. }
  467. public function get_infos(){
  468. $order=Ordertest::where('is_deleted',0)->where('created_at','>=','2020-08-24 21:00:00')->with(['order_detail','get_pay'=>function($q){
  469. $q->whereIn('type',[1,2,3]);
  470. },'get_user'])->get();
  471. $i=0;
  472. foreach ($order as $k=>$v){
  473. $money=0;
  474. $pay_money=0;
  475. $pay=0;
  476. $pay1=0;
  477. $pay2=0;
  478. foreach ($v->order_detail as $ke=>$va){
  479. $money+=$va->money;
  480. // $pay_money+=$va->pay_money;
  481. //该订单总金额
  482. }
  483. foreach ($v->get_pay as $ke=>$value){
  484. //订单支付的金额
  485. if ($value->type==1){
  486. $pay+=$value->pay_money;
  487. }elseif ($value->type==2){
  488. //带订单退款金额
  489. $pay1+=$value->pay_money;
  490. }elseif ($value->type==3){
  491. $pay2+=$value->money;
  492. }
  493. }
  494. if (($pay1-$pay2)>$money){
  495. echo $v->order_num.'<br/>';
  496. }
  497. }
  498. // echo 1;
  499. }
  500. public function get_count(){
  501. $re=MoneyUser::with(['get_pay'=>function($q){
  502. $q->whereIn('user_pay_log.type',[0,3])->where('user_pay_log.created_at','>','2020-08-23 00:00:00');
  503. }])->get();
  504. foreach ($re as $k=>$v){
  505. $money=0;
  506. $moneys=0;
  507. if ($v->get_pay->isEmpty()){
  508. $money=0;
  509. }else{
  510. foreach ($v->get_pay as $ke=>$va){
  511. if ($va->type==0){
  512. $money+=$va->pay_money;
  513. }else{
  514. $moneys+=$va->pay_money;
  515. }
  516. }
  517. }
  518. if ($moneys>20){
  519. $money-=$moneys;
  520. }
  521. if ($money!=$v->money){
  522. echo '充值金额为'.$money.'------------'.$v->mobile.'-----Excel数据中的金额-----'.$v->money.'<br/>';
  523. }
  524. }
  525. }
  526. }