165 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
		
		
			
		
	
	
			165 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| 
								 | 
							
								<?php
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								namespace addons\cardocr;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								use addons\cardocr\library\Card;
							 | 
						||
| 
								 | 
							
								use app\common\library\Menu;
							 | 
						||
| 
								 | 
							
								use think\Addons;
							 | 
						||
| 
								 | 
							
								use think\Exception;
							 | 
						||
| 
								 | 
							
								use think\Loader;
							 | 
						||
| 
								 | 
							
								use think\Request;
							 | 
						||
| 
								 | 
							
								use think\response\Json;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * 身份证联网认证插件
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								class Cardocr extends Addons
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    private $menu;
							 | 
						||
| 
								 | 
							
								    private $name = "cardocr";
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public function __construct()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        parent::__construct();
							 | 
						||
| 
								 | 
							
								        $menu = [
							 | 
						||
| 
								 | 
							
								            [
							 | 
						||
| 
								 | 
							
								                'name'    => 'cardocr',
							 | 
						||
| 
								 | 
							
								                'title'   => '身份证验证管理',
							 | 
						||
| 
								 | 
							
								                'icon'    => 'fa fa-address-book',
							 | 
						||
| 
								 | 
							
								                'sublist' => [
							 | 
						||
| 
								 | 
							
								                    [
							 | 
						||
| 
								 | 
							
								                        'name'    => 'cardocr/card',
							 | 
						||
| 
								 | 
							
								                        'title'   => '身份证验证',
							 | 
						||
| 
								 | 
							
								                        'icon'    => 'fa  fa-id-card',
							 | 
						||
| 
								 | 
							
								                        'sublist' => [
							 | 
						||
| 
								 | 
							
								                            ['name' => 'cardocr/card/index', 'title' => '查看'],
							 | 
						||
| 
								 | 
							
								                            ['name' => 'cardocr/card/add', 'title' => '添加'],
							 | 
						||
| 
								 | 
							
								                            ['name' => 'cardocr/card/edit', 'title' => '修改'],
							 | 
						||
| 
								 | 
							
								                            ['name' => 'cardocr/card/del', 'title' => '删除'],
							 | 
						||
| 
								 | 
							
								                            ['name' => 'cardocr/card/multi', 'title' => '批量更新'],
							 | 
						||
| 
								 | 
							
								                        ]
							 | 
						||
| 
								 | 
							
								                    ],
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                ]
							 | 
						||
| 
								 | 
							
								            ]
							 | 
						||
| 
								 | 
							
								        ];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $this->menu = $menu;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * 插件安装方法
							 | 
						||
| 
								 | 
							
								     * @return bool
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public function install()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        Menu::create($this->menu);
							 | 
						||
| 
								 | 
							
								        return true;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * 插件卸载方法
							 | 
						||
| 
								 | 
							
								     * @return bool
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public function uninstall()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        Menu::delete($this->name);
							 | 
						||
| 
								 | 
							
								        return true;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * 插件启用方法
							 | 
						||
| 
								 | 
							
								     * @return bool
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public function enable()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        Menu::enable($this->name);
							 | 
						||
| 
								 | 
							
								        return true;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * 插件禁用方法
							 | 
						||
| 
								 | 
							
								     * @return bool
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public function disable()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        Menu::disable($this->name);
							 | 
						||
| 
								 | 
							
								        return true;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /** 检查身份证号码与姓名是一致钩子
							 | 
						||
| 
								 | 
							
								     * @param array $checkdata ['name'];$checkdata["idnum"]
							 | 
						||
| 
								 | 
							
								     * @return json
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public function checkIdname($checkdata)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $arr['time'] = time();
							 | 
						||
| 
								 | 
							
								        if(!isset($checkdata["name"])) {
							 | 
						||
| 
								 | 
							
								            return json(['code'=>400,'msg'=>'姓名不能缺少'],400);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        if(!isset($checkdata["idnum"])) {
							 | 
						||
| 
								 | 
							
								            return json(['code'=>400,'msg'=>'身份证号码不能缺少'],400);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $data = Card::checkidcard($checkdata["idnum"],$checkdata["name"]);
							 | 
						||
| 
								 | 
							
								        return json(array_filter($data));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /** 身份证识别钩子
							 | 
						||
| 
								 | 
							
								     * @param array $array $data['ImageBase64'] = $ImageBase64;$data['CardSide'] = 'FRONT';
							 | 
						||
| 
								 | 
							
								     * 传入例子   checkOcr($data, $data['CardSide'])
							 | 
						||
| 
								 | 
							
								     * @param array $array ['CardSide'] |'FRONT','BACK' 识别身份证正反
							 | 
						||
| 
								 | 
							
								     * @return json
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public function checkOcr($arrjson)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $arr['time'] = time();
							 | 
						||
| 
								 | 
							
								        if(!isset($arrjson["ImageBase64"])) {
							 | 
						||
| 
								 | 
							
								            return json(['code'=>400,'msg'=>'身份证缺少ImageBase64'],400);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        if(!preg_match('/^data:image\/(png|jpeg|gif);base64,/',  $arrjson['ImageBase64'])){
							 | 
						||
| 
								 | 
							
								            return json(['code'=>400,'msg'=>'ImageBase64参数不是ImageBase64 格式'],400);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        if(!isset($arrjson["CardSide"]) ){
							 | 
						||
| 
								 | 
							
								            return json(['code'=>400,'msg'=>'身份证缺少正反面参数'],400);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        if($arrjson["CardSide"]!='FRONT' && $arrjson["CardSide"]!='BACK' ){
							 | 
						||
| 
								 | 
							
								            return json(['code'=>400,'msg'=>'身份证正反面参数不符合'],400);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $data = Card::checkcardocr(json_encode($arrjson), $arrjson['CardSide']);
							 | 
						||
| 
								 | 
							
								        return json(array_filter($data));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * 添加命名空间
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public function appInit()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        //添加支付包的命名空间
							 | 
						||
| 
								 | 
							
								        Loader::addNamespace('TencentCloud', ADDON_PATH . 'cardocr' . DS . 'library' . DS . 'TencentCloud' . DS);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * 会员中心边栏后
							 | 
						||
| 
								 | 
							
								     * @return mixed
							 | 
						||
| 
								 | 
							
								     * @throws \Exception
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public function userSidenavAfter()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        $request = Request::instance();
							 | 
						||
| 
								 | 
							
								        $controllername = strtolower($request->controller());
							 | 
						||
| 
								 | 
							
								        $actionname = strtolower($request->action());
							 | 
						||
| 
								 | 
							
								        $data = [
							 | 
						||
| 
								 | 
							
								            'actionname'     => $actionname,
							 | 
						||
| 
								 | 
							
								            'controllername' => $controllername
							 | 
						||
| 
								 | 
							
								        ];
							 | 
						||
| 
								 | 
							
								        return $this->fetch('view/hook/user_sidenav_after', $data);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 |