UserBank.php 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: phpadmin
  5. * Date: 2020/11/26
  6. * Time: 23:20
  7. */
  8. namespace app\controller\api\user;
  9. use app\common\repositories\user\UserExtractRepository;
  10. use think\facade\Cache;
  11. use app\common\repositories\user\UserBankRepository;
  12. use crmeb\basic\BaseController;
  13. use think\App;
  14. use think\facade\Db;
  15. class UserBank extends BaseController
  16. {
  17. public $repository;
  18. public $appid;
  19. public $appKey;
  20. public $secretKey;
  21. public function __construct(App $app,UserExtractRepository $repository)
  22. {
  23. parent::__construct($app);
  24. $this->repository = $repository;
  25. $this->appid='24267127';
  26. $this->appKey='Utg2bxLY4is7h5DPehVZ63Q4';
  27. $this->secretKey='yfGMEAO6YQXIE2pqYMiH4MNBE1DcNhyO';
  28. $this->accessToken = Cache::get('access_token');
  29. if(!$this->accessToken){
  30. $this->getToken();
  31. }
  32. }
  33. function request_post($url = '', $param = '') {
  34. if (empty($url) || empty($param)) {
  35. return false;
  36. }
  37. $postUrl = $url;
  38. $curlPost = $param;
  39. $curl = curl_init();//初始化curl
  40. curl_setopt($curl, CURLOPT_URL,$postUrl);//抓取指定网页
  41. curl_setopt($curl, CURLOPT_HEADER, 0);//设置header
  42. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);//要求结果为字符串且输出到屏幕上
  43. curl_setopt($curl, CURLOPT_POST, 1);//post提交方式
  44. curl_setopt($curl, CURLOPT_POSTFIELDS, $curlPost);
  45. $data = curl_exec($curl);//运行curl
  46. curl_close($curl);
  47. return $data;
  48. }
  49. /*获取access_token*/
  50. public function getToken()
  51. {
  52. $url = 'https://aip.baidubce.com/oauth/2.0/token';
  53. $post_data['grant_type'] = 'client_credentials';
  54. $post_data['client_id'] = $this->appKey;
  55. $post_data['client_secret'] = $this->secretKey;
  56. $o = "";
  57. foreach ($post_data as $k => $v) {
  58. $o .= "$k=" . urlencode($v) . "&";
  59. }
  60. $post_data = substr($o, 0, -1);
  61. $res = $this->request_post($url, $post_data);
  62. $res = json_decode($res,true);
  63. // Db::name('log')->insert(['data'=>json_encode($res)]);
  64. $this->accessToken = Cache::set('access_token',$res['access_token'],86400);
  65. }
  66. /*营业执照识别*/
  67. public function businessLicense(){
  68. $image_url = $this->request->param(['image_url']);
  69. if(!$image_url){
  70. return app("json")->fail("参数丢失");
  71. }
  72. $token = $this->accessToken;
  73. $url = 'https://aip.baidubce.com/rest/2.0/ocr/v1/business_license?access_token=' . $token;
  74. $img = file_get_contents($image_url['image_url']);
  75. $img = base64_encode($img);
  76. $bodys = array(
  77. 'image' => $img
  78. );
  79. $res = $this->request_post($url, $bodys);
  80. $res = json_decode($res,true);
  81. $data['credit_code'] = $res['words_result']['社会信用代码']['words']??'';
  82. $data['business_addr'] = $res['words_result']['地址']['words']??'';
  83. $data['mer_name'] = $res['words_result']['单位名称']['words']??'';
  84. return app("json")->success("ok",$data);
  85. }
  86. /*银行卡识别*/
  87. public function bankCardGet(){
  88. $image_url = $this->request->param(['image_url']);
  89. if(!$image_url){
  90. return app("json")->fail("参数丢失");
  91. }
  92. $image_url=$this->resize_image($image_url['image_url']);
  93. $image_url="http://" . $this->request->host(true) .$image_url;
  94. // Db::name('log')->insert(['data'=>$image_url]);
  95. $token = $this->accessToken;
  96. $url = 'https://aip.baidubce.com/rest/2.0/ocr/v1/bankcard?access_token=' . $token;
  97. $img = file_get_contents($image_url);
  98. $img = base64_encode($img);
  99. $bodys = array(
  100. 'image' => $img
  101. );
  102. $res = $this->request_post($url, $bodys);
  103. // Db::name('log')->insert(['data'=>$res]);
  104. $res = json_decode($res,true);
  105. $res['result']['icon'] = '';
  106. $res['result']['bank_card_number'] = '';
  107. if(isset($res['result']['bank_card_number'])){
  108. $res['result']['bank_card_number'] = preg_replace('# #', '', $res['result']['bank_card_number']);
  109. }
  110. return app("json")->success("ok",$res['result']);
  111. }
  112. public function resize_image($img_url)
  113. {
  114. // https://app.bjtdba.com/uploads/def/20210302/2d31574c539cfec5080f07446a25dcf7.jpg
  115. // '/uploads/def/20220104/414831.jpg';
  116. $filename =$img_url;
  117. $percent = 0.4;
  118. $rand=rand(111111,999999);
  119. $newname='./public/uploads/def/'.date('Ymd').'/'.$rand.'.jpg';
  120. if(!is_dir('./public/uploads/def/'.date('Ymd').'/')){
  121. mkdir('./public/uploads/def/'.date('Ymd'),0777,true);
  122. }
  123. list($width, $height) = getimagesize($filename);
  124. $new_width = $width * $percent;
  125. $new_height = $height * $percent;
  126. $image_p = imagecreatetruecolor($new_width, $new_height);
  127. $image = imagecreatefromjpeg($filename);
  128. imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
  129. if(!imagejpeg($image_p,$newname)){
  130. // Db::name('log')->insert(['data'=>'文件添加失败']);
  131. return 12312312;
  132. }
  133. return '/uploads/def/'.date('Ymd').'/'.$rand.'.jpg';
  134. }
  135. public function account(){
  136. $image_url = $this->request->param(['image_url']);
  137. if(!$image_url){
  138. return app("json")->fail("参数丢失");
  139. }
  140. $token = $this->accessToken;
  141. $url = 'https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic?access_token=' . $token;
  142. $img = file_get_contents($url);
  143. $img = base64_encode($img);
  144. $bodys = array(
  145. 'image' => $img
  146. );
  147. $res = $this->request_post($url, $bodys);
  148. var_dump($res);
  149. }
  150. /**
  151. * 银行卡列表
  152. */
  153. public function listBank()
  154. {
  155. $where['user_id'] = $this->request->uid();
  156. $result = $this->repository->listBank($where);
  157. return app("json")->success($result);
  158. }
  159. /*添加银行卡*/
  160. public function createBank(){
  161. // $data = $this->request->param(['account','valid_date','bank_card_type','bank_name','user_name','phone','user_card','bank_open_name']);
  162. $data = $this->request->param(['account','bank_card_type','bank_name','user_name','user_card','bank_open_name','pic']);
  163. $data['user_id'] = $this->request->uid();
  164. $result = $this->repository->createBank($data);
  165. if(isset($result['code']) && $result['code'] == 400){
  166. return app("json")->fail($result['msg']);
  167. }
  168. return app("json")->success('添加成功',$result);
  169. }
  170. /*更换银行卡*/
  171. public function changeBank($id){
  172. // if(!$id){
  173. // return app("json")->fail("参数丢失");
  174. // }
  175. $data = $this->request->param(['account','bank_card_type','bank_name','user_name','user_card','bank_open_name','pic']);
  176. // $data = $this->request->param(['account','valid_date','bank_card_type','bank_name','user_name','phone']);
  177. $data['user_id'] = $this->request->uid();
  178. $data['info'] = $data['user_name'];
  179. // $where['id'] = $id;
  180. $where['user_id'] = $this->request->uid();
  181. $where['account_type'] = 3;
  182. return app("json")->success('更换成功',$this->repository->saveBank($where,$data));
  183. }
  184. }