__('男'), '女' => __('女'), '未知' => __('未知')]; } public function getStatusList() { return ['0' => __('Down'), '1' => __('Pass'), '2' => __('Unaudited')]; } public function getSexTextAttr($value, $data) { $value = $value ? $value : (isset($data['sex']) ? $data['sex'] : ''); $list = $this->getSexList(); return isset($list[$value]) ? $list[$value] : ''; } public function getPublishtimeTextAttr($value, $data) { $value = $value ? $value : (isset($data['publishtime']) ? $data['publishtime'] : ''); return is_numeric($value) ? date("Y-m-d H:i:s", $value) : $value; } protected function setPublishtimeAttr($value) { return $value === '' ? null : ($value && !is_numeric($value) ? strtotime($value) : $value); } public function user() { return $this->belongsTo('app\common\model\User', 'user_id', 'id', [], 'LEFT')->setEagerlyType(0); } /** 新增实名认证 * @param $params * @param $trans * @return $this * @throws \Exception */ public function add($params,$trans=false){ if (empty($params)) { throw new \Exception(__('Parameter %s can not be empty', '')); } $rule = [ 'user_id'=>'require', 'name'=>'require', 'idnum'=>'require', 'positive_img' => 'require', 'back_img'=>'require', ]; $rule_msg = [ "user_id.require"=>'认证用户必填', "name.require"=>'姓名必填', "idnum.require"=>'身份证号必填', 'positive_img.require' => '身份证正面必填', 'back_img.require' => '身份证反面必填', ]; self::check($params,$rule,$rule_msg); $user_id = $params["user_id"]; //开启api验证 if (config("site.realname_isthroughapi")) { $url = Config::get('upload.cdnurl'); $ImageUrl = cdnurl($params['positive_img'],true); $ImagebackUrl = cdnurl($params['back_img'],true); //orc获取正面信息 $front_data = $this->checkfront($ImageUrl); $front_data = array_change_key_case($front_data, CASE_LOWER); $params = $front_data + $params; //orc获取反面信息 $back_data = $this->checkback($ImagebackUrl); $back_data = array_change_key_case($back_data['backdata'], CASE_LOWER); //修改审核通过 $params['status'] = 1; $params["publishtime"] = time(); $params = array_filter($back_data) + $params; //调用api身份证实名验证 $params_data = \addons\cardocr\library\Card::checkidcard($params['idnum'], $params['name']); if ($params_data['Result'] != 0) { throw new \Exception(__('姓名与身份号码不一致', '')); } } if(config("site.real_name_automatic_approval")){ $params['status'] = 1; $params["publishtime"] = time(); } //判断逻辑 if($trans){ self::beginTrans(); } $res = true; try{ //查询是否有认证信息,如果有则修改,如果没有则添加 $card = self::where('user_id',$user_id)->find(); if($card){ $result = $card->allowField(true)->save($params); $self = $card; }else{ $result = $this->allowField(true)->save($params); $self = $this; } if($trans){ self::commitTrans(); } }catch (\Exception $e){ if($trans){ self::rollbackTrans(); } throw new \Exception($e->getMessage().$e->getFile().$e->getLine()); } return $self; } /** 检测实名认证状态 * @param $user_id */ public function checkRealname($user_id=0){ //默认状态为-1未认证,0认证被拒绝,1认证通过,2=等待审核 $status = -1; $card_info = self::where('user_id',$user_id)->find(); //认证信息 if($card_info){ $status = $card_info['status']; } return compact('status' , 'card_info'); } }