qinzexin 08df146841 下单新增人员和备注
新增实名认证
2025-06-06 18:34:08 +08:00

187 lines
4.9 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
namespace app\common\model\cardocr;
use app\common\model\BaseModel;
use think\Config;
use think\Model;
class Card extends BaseModel
{
// 表名
protected $name = 'cardocr';
// 自动写入时间戳字段
protected $autoWriteTimestamp = 'int';
// 定义时间戳字段名
protected $createTime = 'createtime';
protected $updateTime = 'updatetime';
protected $deleteTime = false;
// 追加属性
protected $append = [
'sex_text',
'publishtime_text'
];
public function getSexList()
{
return ['男' => __('男'), '女' => __('女'), '未知' => __('未知')];
}
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');
}
}