Files
liche/common/libraries/receiver/Order_datas_entity.php
T
2022-09-07 17:20:41 +08:00

458 lines
20 KiB
PHP

<?php
/**
* Created by PhpStorm.
* User: lcc
* Date: 2022/1/10
* Time: 16:11
*/
class Order_datas_entity{
private $ci;
private $wd_config = [ //网点配置
350100 => ['name'=>'福州狸车销售有限公司','code'=>'FJ0011'],
350200 => ['name'=>'厦门狸车销售有限公司','code'=>'FJ0007'],
350500 => ['name'=>'泉州狸车销售有限公司','code'=>'FJ0009'],
];
const COLOR_UN_UPLOAD = '#f9394d'; //未传
const COLOR_IS_UPLOAD = '#fd9737'; //已传
const COLOR_UN_CHECK = '#f9394d'; //未通过
const COLOR_CHECK = '#36afa2'; //通过
public function __construct(){
$this->ci = & get_instance();
$this->ci->load->model('receiver/order/receiver_orders_v2_model');
$this->ci->load->model('receiver/order/receiver_order_contracts_model','order_contracts_model');
$this->ci->load->model('receiver/order/receiver_order_datas_model');
$this->ci->load->model('receiver/order/receiver_order_agents_model');
$this->ci->load->model('app/app_checkdata_model');
$this->ci->load->model('app/licheb/app_licheb_users_model');
$this->ci->load->model('app/licheb/app_licheb_channel_biz_model');
$this->ci->load->model("biz/biz_model");
$this->ci->load->model('auto/auto_brand_model');
$this->ci->load->model('auto/auto_series_model');
$this->ci->load->model('auto/auto_attr_model');
$this->ci->load->model("items/items_model");
$this->ci->load->library('TcOrc');
$this->ci->load->library('qiniuorc');
$this->ci->load->library('pdftk');
$this->ci->load->library('pdf');
}
public function data_status($o_data){
$result = [
'cardida' => ['text'=>'未传','type'=>1,'color'=>self::COLOR_UN_UPLOAD], //身份证
'business_licence' => ['text'=>'未传','type'=>1,'color'=>self::COLOR_UN_UPLOAD], //营业执照
'register_img' => ['text'=>'未传','type'=>2,'color'=>self::COLOR_UN_UPLOAD], //登记证
'car_img' => ['text'=>'未传','type'=>3,'color'=>self::COLOR_UN_UPLOAD], //行驶证
'ins_img' => ['text'=>'未传','type'=>4,'color'=>self::COLOR_UN_UPLOAD], //保单证
'other_img' => ['text'=>'未传','type'=>5,'color'=>self::COLOR_UN_UPLOAD], //交车合照
];
foreach ($result as $key=>$item) {
if($key=='ins_img'){
if($o_data['ins_img'] || $o_data['insurance_img'] || $o_data['business_img']){
$result[$key]['text'] = '已传';
$result[$key]['color'] = self::COLOR_IS_UPLOAD;
}
}else{
if($o_data[$key]){
$result[$key]['text'] = '已传';
$result[$key]['color'] = self::COLOR_IS_UPLOAD;
}
}
}
return $result;
}
//获取图片审核状态
public function data_ckinfo($o_data,$main_type=0){
if($main_type){
$result = [
'business_licence' => ['text'=>'营业执照','type'=>1,'up_status'=>0,'status'=>0,'status_cn'=>'未审核','imgs' => []], //公司营业执照
'register_img' => ['text'=>'登记证','type'=>2,'up_status'=>0,'status'=>0,'status_cn'=>'未审核','imgs' => []], //登记证
'car_img' => ['text'=>'行驶证','type'=>3,'up_status'=>0,'status'=>0,'status_cn'=>'未审核','imgs'=>[]], //行驶证
'ins_img' => ['text'=>'保单证','type'=>4,'up_status'=>0,'status'=>0,'status_cn'=>'未审核','imgs'=>[]], //保单证
'insurance_img' => ['text'=>'保单证','type'=>4,'up_status'=>0,'status'=>0,'status_cn'=>'未审核','imgs'=>[]], //交强险图片
'business_img' => ['text'=>'保单证','type'=>4,'up_status'=>0,'status'=>0,'status_cn'=>'未审核','imgs'=>[]], //商业险图片
'other_img' => ['text'=>'交车合照','type'=>5,'up_status'=>0,'status'=>0,'status_cn'=>'未审核','imgs'=>[]], //交车合照
'delivery_ck_img' => ['text'=>'交车合照','type'=>6,'up_status'=>0,'status'=>0,'status_cn'=>'未审核','imgs'=>[]], //交车确认图片
];
}else{
$result = [
'cardida' => ['text'=>'身份证正面','type'=>1,'up_status'=>0,'status'=>0,'status_cn'=>'未审核','imgs' => []], //身份证
'register_img' => ['text'=>'登记证','type'=>2,'up_status'=>0,'status'=>0,'status_cn'=>'未审核','imgs' => []], //登记证
'car_img' => ['text'=>'行驶证','type'=>3,'up_status'=>0,'status'=>0,'status_cn'=>'未审核','imgs'=>[]], //行驶证
'ins_img' => ['text'=>'保单证','type'=>4,'up_status'=>0,'status'=>0,'status_cn'=>'未审核','imgs'=>[]], //保单证
'insurance_img' => ['text'=>'交强险','type'=>4,'up_status'=>0,'status'=>0,'status_cn'=>'未审核','imgs'=>[]], //交强险图片
'business_img' => ['text'=>'商业险','type'=>4,'up_status'=>0,'status'=>0,'status_cn'=>'未审核','imgs'=>[]], //商业险图片
'other_img' => ['text'=>'交车合照','type'=>5,'up_status'=>0,'status'=>0,'status_cn'=>'未审核','imgs'=>[]], //交车合照
'delivery_ck_img' => ['text'=>'交车合照','type'=>6,'up_status'=>0,'status'=>0,'status_cn'=>'未审核','imgs'=>[]], //交车确认图片
];
}
$where = [
'cf_id'=>$o_data['id'],
'app_id'=>2,
'type in (1,2,3,4,5)'=>null,
'datatype'=>'img'
];
$check_data = $this->ci->app_checkdata_model->map('type','',$where,'','','','id,cf_id,type,ifcheck');
foreach ($result as $key=>$item) {
$result[$key]['up_status'] = 1;
$ifcheck = $check_data[$item['type']][0]['ifcheck'];
$imgs = [];
if($key=='ins_img'||$key=='other_img'){
$img_data = json_decode($o_data[$key],true);
if(is_array($img_data)){
foreach ($img_data as $v) {
$imgs[] = build_qiniu_image_url($v);
}
}
}elseif($key=='insurance_img'||$key=='business_img'){
$img_data = json_decode($o_data[$key],true);
$img_data['img'] && $imgs[] = build_qiniu_image_url($img_data['img']);
}else{
$o_data[$key] && $imgs[] = build_qiniu_image_url($o_data[$key]);
if($key=='cardida' && $o_data['cardidb']){
$imgs[1] = build_qiniu_image_url($o_data['cardidb']);
}
}
$result[$key]['imgs'] = $imgs;
if($ifcheck==1){
$result[$key]['status_cn'] = '已通过';
$result[$key]['status'] = 1;
}elseif($ifcheck==-1){
$result[$key]['status_cn'] = '未通过';
$result[$key]['status'] = -1;
}else{
$result[$key]['status_cn'] = '未审核';
$result[$key]['status'] = 0;
}
}
return $result;
}
/**
* 更新数据
* @param $oid
* @param $data
* @return void
*/
public function up_data($oid,$data){
if(!$data){
return false;
}
$row = $this->ci->receiver_order_datas_model->get(['o_id'=>$oid]);
if(!$row){
$this->ci->receiver_order_datas_model->add(['o_id'=>$oid,'c_time'=>time()]);
}
$res = $this->ci->receiver_order_datas_model->update($data,['o_id'=>$oid]);
return $res;
}
/**
* 识别行驶证
* @param $oid
* @return bool
*/
public function orc_car_img($oid){
$row = $this->ci->receiver_order_datas_model->get(['o_id'=>$oid]);
if(!$row['car_img']){
return false;
}
$img_url = build_qiniu_image_url($row['car_img']);
$result = $this->ci->tcorc->VehicleLicense($img_url);
if (!$result['code']) {
return false;
}
$jsondata = json_decode($row['jsondata'],true);
$jsondata['car_info'] = $result['data']['FrontInfo'];
$update = [
'jsondata' => json_encode($jsondata,JSON_UNESCAPED_UNICODE)
];
$res = $this->ci->receiver_order_datas_model->update($update,['id'=>$row['id']]);
return $res;
}
/**
* 识别保单图片
* @param $oid
* @return false
*/
public function orc_ins_img($oid){
$row = $this->ci->receiver_order_datas_model->get(['o_id'=>$oid]);
$ins_img = json_decode($row['ins_img'],true);
$jsondata = json_decode($row['jsondata'],true);
$ins_info = $jsondata['ins_info'] ? $jsondata['ins_info'] : [];
if($ins_img){
$img_keys = [];
foreach ($ins_img as $key=>$value) {
$value && $url = build_qiniu_image_url($value);
$url && $img_keys[] = md5($url);
$ins_key = md5($url);
if($url && !$ins_info[$ins_key]){
$result = $this->ci->qiniuorc->car_insure($url);
if ($result['code']) {
$ins_info[$ins_key]['msg'] = $result['msg'];
$ins_info[$ins_key]['data'] = $result['data'];
$ins_info[$ins_key]['img_url'] = $url;
}else{
$ins_info[$ins_key]['msg'] = $result['msg'];
$ins_info[$ins_key]['img_url'] = $url;
}
}
}
$ins_time = $company = '';
$ins_risk = $business_risk = 0;
foreach ($ins_info as $key=>$value) {
if(!in_array($key,$img_keys)){
unset($ins_info[$key]);
}else{
$money = floatval($value['data']['合计保费']);
if($money==950){
$ins_risk = $money;
}else{
$company = $value['data']['保险公司'];
$ins_time = date('Y-m-d',strtotime($value['data']['投保确认时间'])+365*12*24*60*60);
$business_risk += $money;
}
}
}
$agent = $this->ci->receiver_order_agents_model->get(['o_id'=>$oid]);
$agent_jsondata = $agent ? json_decode($agent['jsondata'],true) : [];
$company && $agent_jsondata['company'] = $company;
$ins_risk && $agent_jsondata['ins_risk'] = $ins_risk;
$business_risk && $agent_jsondata['business_risk'] = $business_risk;
if(!$agent){
$add = [
'o_id' => $oid,
'jsondata' => json_encode($agent_jsondata,JSON_UNESCAPED_UNICODE),
'c_time' => time(),
];
$ins_time && $add['ins_time'] = $ins_time;
$this->ci->receiver_order_agents_model->add($add);
}else{
$update['jsondata'] = json_encode($agent_jsondata,JSON_UNESCAPED_UNICODE);
$ins_time && $update['ins_time'] = $ins_time;
$this->ci->receiver_order_agents_model->update($update,['id'=>$agent['id']]);
}
}
$jsondata['ins_info'] = $ins_info;
$update = [
'jsondata' => json_encode($jsondata,JSON_UNESCAPED_UNICODE)
];
$res = $this->ci->receiver_order_datas_model->update($update,['id'=>$row['id']]);
return $res;
}
/**
* 识别保单图片
* @param $oid
* @return false
*/
public function orc_ins_img_2($oid){
$row = $this->ci->receiver_order_datas_model->get(['o_id'=>$oid]);
$insurance_img = json_decode($row['insurance_img'],true);
$business_img = json_decode($row['business_img'],true);
$jsondata = json_decode($row['jsondata'],true);
$ins_info = $jsondata['ins_info'] ? $jsondata['ins_info'] : [];
if($insurance_img['img']){
$url = build_qiniu_image_url($insurance_img['img']);
$ins_key = md5($url);
if(!$ins_info[$ins_key]){
$result = $this->ci->qiniuorc->car_insure($url);
if ($result['code']) {
$ins_info[$ins_key]['msg'] = $result['msg'];
$ins_info[$ins_key]['data'] = $result['data'];
$ins_info[$ins_key]['img_url'] = $url;
$jsondata['ins_info'] = $ins_info;
$insurance_img['price'] = floatval($result['data']['合计保费']);
$insurance_img['date'] = $result['data']['投保确认时间'];
$insurance_img['product'] = $result['data']['保险公司'];
}else{
$ins_info[$ins_key]['msg'] = $result['msg'];
$ins_info[$ins_key]['img_url'] = $url;
return false;
}
}
}
if($business_img['img']){
$url = build_qiniu_image_url($business_img['img']);
$ins_key = md5($url);
if(!$ins_info[$ins_key]){
$result = $this->ci->qiniuorc->car_insure($url);
if ($result['code']) {
$ins_info[$ins_key]['msg'] = $result['msg'];
$ins_info[$ins_key]['data'] = $result['data'];
$ins_info[$ins_key]['img_url'] = $url;
$jsondata['ins_info'] = $ins_info;
$business_img['price'] = floatval($result['data']['合计保费']);
$business_img['date'] = $result['data']['投保确认时间'];
$business_img['product'] = $result['data']['保险公司'];
}else{
$ins_info[$ins_key]['msg'] = $result['msg'];
$ins_info[$ins_key]['img_url'] = $url;
return false;
}
}
}
$update = [
'jsondata' => json_encode($jsondata,JSON_UNESCAPED_UNICODE),
'insurance_img' => json_encode($insurance_img,JSON_UNESCAPED_UNICODE),
'business_img' => json_encode($business_img,JSON_UNESCAPED_UNICODE),
];
$res = $this->ci->receiver_order_datas_model->update($update,['id'=>$row['id']]);
return $res;
}
/**
* 更新车牌号
* @return void
*/
public function up_car_num($oid){
$row = $this->ci->receiver_order_datas_model->get(['o_id'=>$oid]);
$jsondata = json_decode($row['jsondata'],true);
$car_num = $jsondata['car_info']['PlateNo'];
$res = false;
if($car_num){
$agent = $this->ci->receiver_order_agents_model->get(['o_id'=>$oid]);
if(!$agent){
$add = [
'o_id' => $oid,
'car_num' => $car_num,
'c_time' => time(),
];
$res = $this->ci->receiver_order_agents_model->add($add);
}else{
$update['car_num'] = $car_num;
$res = $this->ci->receiver_order_agents_model->update($update,['id'=>$agent['id']]);
}
}
return $res;
}
/**
* 生成确认交车合同
* @param $oid
* @return array
*/
public function fill_finsh_pdf($oid){
$order = $this->ci->receiver_orders_v2_model->get(['id'=>$oid]);
if(!$order){
return ['code'=>0,'msg'=>'参数错误'];
}
$biz = $this->ci->biz_model->get(['id'=>$order['biz_id']],'city_id');
$wd = $this->wd_config[$biz['city_id']] ? $this->wd_config[$biz['city_id']] : $this->wd_config['350200'];
//车辆信息
$brand = $this->ci->auto_brand_model->get(['id'=>$order['brand_id']],'name');
$series = $this->ci->auto_series_model->get(['id'=>$order['s_id']],'name');
$version = $this->ci->auto_attr_model->get(['id'=>$order['v_id']],'title');
$color = $this->ci->auto_attr_model->get(['id'=>$order['cor_id']],'title');
$_version = $version['title'] ? $version['title'] : '';
$item = $this->ci->items_model->get(['id'=>$order['item_id']],'vin');
$sale_row = $this->ci->app_licheb_users_model->get(['id'=>$order['sale_id']],'uname');
$qd_biz_row = $this->ci->app_licheb_channel_biz_model->select(['biz_id'=>$order['biz_id']],'c_time desc',1,1,'id,uid');
$qd_row = $this->ci->app_licheb_users_model->get(['id'=>$qd_biz_row[0]['uid']],'uname');
if(in_array($order['v_id'],[173,176,327,330])){
$fill_2 = "/";
}else{
$fill_2 = "";
}
$fill_data = [
'code_name' => $wd['name'],
'code' => $wd['code'],
'car' => "{$brand['name']} {$series['name']} $_version",
'name' => $order['owner_name'],
'color' => $color['title'] ? $color['title'] : '',
'vin' => $item['vin'] ? $item['vin'] : '',
'sale_name' => $sale_row['uname'] ? $sale_row['uname'] : '',
'channel_name' => $qd_row['uname'] ? $qd_row['uname'] : '',
'time' => date('Y-m-d'),
'fill_2' => $fill_2
];
$pdf_path = 'pdf/finish_tpl.pdf';
$save_path = "pdf/{$order['sid']}/finish.pdf";
$req = $this->ci->pdftk->esign_fill_pdf($pdf_path,$save_path,$fill_data);
if(!$req['code']){
return ['code'=>0,'msg'=>$req['msg']];
}
$where = [
'o_id' => $oid,
'type' => 6
];
$row = $this->ci->order_contracts_model->get($where);
$up_data = [
'file' => $req['data']['file_path'] ? $req['data']['file_path'] : '',
];
//pdf转图片
if($up_data['file']){
$pdf_url = http_host_com('api').'/'.$up_data['file'];
$imgs = $this->ci->pdf->pdf2img($pdf_url);
if($imgs){
$up_data['imgs'] = json_encode($imgs,JSON_UNESCAPED_UNICODE);
}
}
if($row){
$result = $this->ci->order_contracts_model->update($up_data,['id'=>$row['id']]);
}else{
$up_data['o_id'] = $oid;
$up_data['type'] = 6;
$up_data['c_time'] = time();
$result = $this->ci->order_contracts_model->add($up_data);
}
if($result){
return ['code'=>1,'msg'=>'保存成功'];
}else{
return ['code'=>0,'msg'=>'保存失败'];
}
}
public function sign_finsh_pdf($oid,$sign_img){
$where = [
'o_id' => $oid,
'type' => 6
];
$row = $this->ci->order_contracts_model->get($where);
$imgs = json_decode($row['imgs'],true);
$jsondata = json_decode($row['jsondata'],true);
if(!$row || !$imgs){
return ['code'=>0,'msg'=>'数据不存在'];
}
$origin_img = $imgs['0'];
$this->ci->load->library('receiver/sign_entity');
$res = $this->ci->sign_entity->merge_img($origin_img,$sign_img,300,1250);
if(!$res){
return ['code'=>0,'msg'=>'图片合并失败'];
}
$img_url = http_host_com('api').'/'.$res;
$this->ci->load->library('qiniu');
$file_name = md5($img_url).'.jpg';
$result = $this->ci->qiniu->fetch($img_url,$file_name);
if(!$result['file']){
$imgs[0] = $img_url;
}else{
@unlink(FCPATH.$res);
$imgs[0] = build_qiniu_image_url($result['file']);
$this->ci->receiver_order_datas_model->update(['delivery_ck_img'=>$result['file']],['o_id'=>$oid]);
}
$jsondata['sign_img'] = $sign_img;
$update = [
'imgs' => json_encode($imgs,JSON_UNESCAPED_UNICODE),
'jsondata' => json_encode($jsondata,JSON_UNESCAPED_UNICODE),
'status' => 1,
'sign_time' => date('Y-m-d H:i:s')
];
$result = $this->ci->order_contracts_model->update($update,['id'=>$row['id']]);
if($result){
return ['code'=>1,'msg'=>'保存成功'];
}else{
return ['code'=>0,'msg'=>'保存失败'];
}
}
}