633 lines
29 KiB
PHP
633 lines
29 KiB
PHP
<?php
|
||
defined('BASEPATH') OR exit('No direct script access allowed');
|
||
|
||
class Order extends CI_Controller{
|
||
|
||
private $log_dir = "licheb";
|
||
private $log_file = "order_v2.log";
|
||
|
||
public function __construct()
|
||
{
|
||
parent::__construct();
|
||
$this->load->model('receiver/order/receiver_orders_model');
|
||
$this->load->model('receiver/order/receiver_orders_v2_model');
|
||
$this->load->model('receiver/order/receiver_order_status_model');
|
||
$this->load->model('receiver/order/receiver_order_datas_model');
|
||
$this->load->model('receiver/order/receiver_order_contracts_model');
|
||
|
||
$this->load->model('app/liche/app_liche_orders_model');
|
||
$this->load->library('receiver/order_datas_entity');
|
||
$this->load->library('receiver/orders_v2_entity');
|
||
}
|
||
|
||
//更新旧订单数据状态
|
||
public function up_old_status(){
|
||
$size = $this->input->get('size');
|
||
!$size && $size = 20;
|
||
|
||
$t1 = 'lc_receiver_orders_v2';
|
||
$t2 = 'lc_receiver_orders';
|
||
|
||
$fields = "$t1.*";
|
||
$where = [
|
||
"$t1.id<" => 10000,
|
||
"$t1.status" => 0,
|
||
"$t2.status" => 6
|
||
];
|
||
|
||
$this->db->from("$t1");
|
||
$this->db->join("$t2", "$t2.id=$t1.id",'left');
|
||
|
||
$this->db->select($fields);
|
||
$this->db->where($where);
|
||
$this->db->order_by("$t1.id asc");
|
||
$this->db->limit($size);
|
||
$rows = $this->db->get()->result_array();
|
||
if($rows){
|
||
foreach($rows as $key=>$val){
|
||
$res = $this->receiver_orders_v2_model->update(['status'=>1],['id'=>$val['id']]);
|
||
$str = "更新订单状态:{$val['id']}";
|
||
debug_log($str,$this->log_file,$this->log_dir);
|
||
}
|
||
}else{
|
||
echo "no data";
|
||
}
|
||
}
|
||
|
||
//过期未支付订单
|
||
public function out_time(){
|
||
if(time()<=strtotime('2022-04-20 00:00:00')){ //2022-4-20后开始执行
|
||
exit;
|
||
}
|
||
$s_time = date('Y-m-d 00:00:00',strtotime("-1 day"));//昨天开始时间
|
||
$e_time = date('Y-m-d 23:59:59',strtotime("-1 day"));//昨天结束时间
|
||
|
||
$last_id_key = "out_time_receiver_order_id";
|
||
$redis = &load_cache();
|
||
$last_id = $redis->get($last_id_key);
|
||
|
||
$where = [
|
||
'c_time<=' => strtotime($e_time),
|
||
'c_time>=' => strtotime($s_time),
|
||
'status' => 0
|
||
];
|
||
|
||
$last_id && $where['id>'] = $last_id;
|
||
$rows = $this->receiver_orders_v2_model->select($where,'id asc',1,30);
|
||
if($rows){
|
||
foreach($rows as $key=>$val){
|
||
$if_pay = $this->app_liche_orders_model->count(['o_id'=>$val['id'],'status'=>1]);
|
||
if(!$if_pay){ //不存在已支付订单
|
||
$this->receiver_orders_v2_model->update(['status'=>-1],['id'=>$val['id']]);
|
||
$this->app_liche_orders_model->update(['status'=>-1],['o_id'=>$val['id']]);
|
||
debug_log("订单过期:".$val['id'],$this->log_file,$this->log_dir);
|
||
}
|
||
$do_last_id = $val['id'];
|
||
}
|
||
$redis->save($last_id_key,$do_last_id,2*24*60*60);
|
||
}else{
|
||
debug_log("订单过期执行完毕",$this->log_file,$this->log_dir);
|
||
}
|
||
}
|
||
|
||
|
||
//更新保险图片
|
||
public function up_ins_img(){
|
||
$redis = load_cache('redis');
|
||
$this->load->library('qiniuorc');
|
||
$page = $this->input->get('page');
|
||
$size = $this->input->get('size');
|
||
!$page && $page = 1;
|
||
!$size && $size = 10;
|
||
$c_key = "TEMP_ORDER_INSIMG_LAST_ID";
|
||
$where = [
|
||
"ins_img <> ''" => null,
|
||
"insurance_img" => null,
|
||
"business_img" => null,
|
||
"o_id>=" => 1000,
|
||
];
|
||
$last_id = $redis->get($c_key);
|
||
if($this->input->get('last_id')){
|
||
echo $last_id;exit;
|
||
}
|
||
if($last_id){
|
||
$where['id<'] = $last_id;
|
||
}
|
||
$count = $this->receiver_order_datas_model->count($where);
|
||
$rows = $this->receiver_order_datas_model->select($where,'id desc',$page,$size,'id,o_id,ins_img,insurance_img,business_img,jsondata');
|
||
if(!$rows){
|
||
echo "finish";
|
||
}
|
||
foreach ($rows as $key => $val) {
|
||
$ins_img = json_decode($val['ins_img'],true);
|
||
$jsondata = json_decode($val['jsondata'],true);
|
||
$ins_info = $jsondata['ins_info'] ? $jsondata['ins_info'] : [];
|
||
$update = $business_img = $insurance_img = [];
|
||
if(is_array($ins_info)){
|
||
$new_ins_img = [];
|
||
foreach ($ins_img as $k => $v) {
|
||
$img_url = build_qiniu_image_url($v);
|
||
$ins_key = md5($img_url);
|
||
$o_ins_info = $ins_info[$ins_key]['data'];
|
||
if(count($o_ins_info['投保险种'])>3 && !$business_img){ //商业险
|
||
$business_img['img'] = $v;
|
||
$business_img['date'] = $o_ins_info['投保确认时间'];
|
||
$business_img['price'] = floatval($o_ins_info['合计保费']);
|
||
$business_img['product'] = $o_ins_info['保险公司'];
|
||
$update['business_img'] = json_encode($business_img,JSON_UNESCAPED_UNICODE);
|
||
}elseif(count($o_ins_info['投保险种'])==3 && !$insurance_img){ //强制险
|
||
$insurance_img['img'] = $v;
|
||
$insurance_img['date'] = $o_ins_info['投保确认时间'];
|
||
$insurance_img['price'] = floatval($o_ins_info['合计保费']);
|
||
$insurance_img['product'] = $o_ins_info['保险公司'];
|
||
$update['insurance_img'] = json_encode($insurance_img,JSON_UNESCAPED_UNICODE);
|
||
}else{
|
||
$new_ins_img[] = $v;
|
||
}
|
||
}
|
||
$update['ins_img'] = json_encode($new_ins_img,JSON_UNESCAPED_UNICODE);
|
||
}
|
||
if($business_img && $insurance_img){
|
||
$this->receiver_order_datas_model->update($update,['id'=>$val['id']]);
|
||
}
|
||
$last_id = $val['id'];
|
||
$update_str = json_encode($update,JSON_UNESCAPED_UNICODE);
|
||
echo "自增id:{$last_id},订单id:{$val['o_id']},更新数据:{$update_str}<br>";
|
||
}
|
||
$redis->save($c_key,$last_id,24*60*60);
|
||
$left = $count-$size;
|
||
echo "剩余:{$left}";
|
||
}
|
||
|
||
/**
|
||
* 获取飞书 tenant_access_token
|
||
* @param $app_id
|
||
* @param $app_secret
|
||
* @return string
|
||
*/
|
||
private function get_tenant_access_token($app_id="cli_a2483b8493fc500d", $app_secret="iO6Egjw09xZ6SJVaNVOUxqClAW8YXnXD"){
|
||
# https://open.feishu.cn/document/ukTMukTMukTM/uMTNz4yM1MjLzUzM
|
||
# https://open.feishu.cn/document/ukTMukTMukTM/ukDNz4SO0MjL5QzM/auth-v3/auth/tenant_access_token_internal
|
||
if (!$app_id || !$app_secret){
|
||
return null;
|
||
}
|
||
$redis = &load_cache('redis');
|
||
$redisKey = 'feishu_app_id_'.$app_id;
|
||
$tenant_access_token = $redis->get($redisKey);
|
||
if ($tenant_access_token){
|
||
return $tenant_access_token;
|
||
}
|
||
|
||
$url = "https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal";
|
||
$data = array("app_id"=>$app_id, "app_secret"=>$app_secret);
|
||
$this->load->library('mycurl');
|
||
$res = $this->mycurl->httpPost($url, $data, $type='is_json');
|
||
$result = json_decode($res, true);
|
||
if ($result && $result['code'] == 0 && $tenant_access_token = $result['tenant_access_token']){
|
||
$expire = $result['expire'] ? $result['expire'] - 100 : 3600;
|
||
$redis->save($redisKey, $tenant_access_token, $expire);
|
||
}
|
||
return $tenant_access_token;
|
||
}
|
||
|
||
/**
|
||
* 获取飞书上传图片的image_key
|
||
* @param $img_path
|
||
* @return string
|
||
*/
|
||
private function get_upload_image_key($img_path='temp/c01.jpg'){
|
||
$image_key = '';
|
||
$tenant_access_token = $this->get_tenant_access_token();
|
||
if (!$tenant_access_token){
|
||
return $image_key;
|
||
#echo "no tenant_access_token";exit();
|
||
}
|
||
|
||
$url = "https://open.feishu.cn/open-apis/im/v1/images";
|
||
$header = ["Authorization: Bearer ".$tenant_access_token, "Content-Type: multipart/form-data"];
|
||
$file_path = $img_path;
|
||
$arr = explode('/', $img_path);
|
||
$postname = array_slice($arr, -1)[0]; #var_dump($arr[count($arr) - 1]);
|
||
#$data = ['image_type="message"', "image=@'".$file_path."'"];
|
||
#$data = ["image_type='message'", "image=@'".realpath($file_path)."'"];
|
||
$data = ["image_type"=>"message", "image"=>curl_file_create(realpath($file_path), 'image/jpeg', $postname)];
|
||
$this->load->library('mycurl');
|
||
$this->mycurl->setHeaders($header);
|
||
$res = $this->mycurl->httpPost($url, $data, $type='is_file', $file_path);
|
||
$result = json_decode($res, true);
|
||
$result && $result['code'] == 0 && $result['data'] && $image_key = $result['data']['image_key'];
|
||
return $image_key;
|
||
}
|
||
|
||
/**
|
||
* Notes:向飞书发送小狸播报
|
||
* https://liche-api-dev.xiaoyu.com/plan/order/send_aggs_biz_ding_piao_rpt?sd=1&test=1
|
||
* https://api.liche.cn/plan/order/send_aggs_biz_ding_piao_rpt
|
||
*/
|
||
public function send_aggs_biz_ding_piao_rpt(){
|
||
$params = $this->input->get();
|
||
$hour = date('H.i');
|
||
$test = false;
|
||
if ( !($hour >= 23.00 && $hour <= 23.10 || $params['sd'])) {
|
||
return false;
|
||
}
|
||
|
||
$redis = &load_cache('redis');
|
||
$redisKey = 'send_aggs_biz_ding_piao_rpt';
|
||
if (intval($this->input->get('rds'))) {
|
||
$redis->delete($redisKey);
|
||
}
|
||
if ($redis->get($redisKey)){
|
||
return false;
|
||
};
|
||
#$redis->save($redisKey, 1, 60 * 10); # 暂不考虑“执行时间过长时重复执行”
|
||
|
||
$today_start = $today_end = $total_start = $total_end = $title_today = $title_ding_today = $title_ding = $title_piao_today = $title_piao = '';
|
||
if ($params['test']){
|
||
$today_start = "2021-12-01 00:00:00";
|
||
$today_end = '2022-06-06';
|
||
$total_start = "2021-12-01 00:00:00";
|
||
$total_end = date('Y-m-01 00:00:00', strtotime('+1 month'));
|
||
$title_today = date('m月d日');
|
||
$title_ding_today = '当日订单';
|
||
$title_ding = '月累计订单';
|
||
$title_piao_today = '当日开票';
|
||
$title_piao = '月累计开票';
|
||
}
|
||
|
||
$this->load->library('receiver/orders_v2_entity');
|
||
$data = $this->orders_v2_entity->aggs_biz_ding_piao_rpt($today_start, $today_end, $total_start, $total_end,
|
||
$title_today, $title_ding_today, $title_ding, $title_piao_today, $title_piao, $create_table_image=true);
|
||
if (!$data || !$data['biz_aggs']){
|
||
echo 'no data';exit();
|
||
}
|
||
$img_path = $data['img_path'] ? $data['img_path'] : '';
|
||
$img_path_ding = $data['img_path_ding'] ? $data['img_path_ding'] : '';
|
||
$img_path_piao = $data['img_path_piao'] ? $data['img_path_piao'] : '';
|
||
if (!$img_path && !$img_path_ding && !$img_path_piao ){
|
||
echo '执行结果:没有生成图片'; exit();
|
||
}
|
||
|
||
$img_path_arr = array();
|
||
#if ($img_path) echo '<img src="/' . $img_path . '"/>';echo '<br>';
|
||
if ($img_path_ding){
|
||
echo '<img src="/' . $img_path_ding . '"/>';echo '<br>';
|
||
$img_path_arr[] = $img_path_ding;
|
||
}
|
||
if ($img_path_piao){
|
||
echo '<img src="/' . $img_path_piao . '"/>';echo '<br>';
|
||
$img_path_arr[] = $img_path_piao;
|
||
}
|
||
|
||
# https://open.feishu.cn/document/ukTMukTMukTM/ucTM5YjL3ETO24yNxkjN
|
||
# 测试图片 img_ecffc3b9-8f14-400f-a014-05eca1a4310g {"StatusCode":0,"StatusMessage":"success"}
|
||
$res = array();
|
||
foreach ($img_path_arr as $img_path){
|
||
$image_key = $this->get_upload_image_key($img_path);
|
||
if (!$image_key){
|
||
echo "执行结果:$img_path 没有生成 image_key<br>";
|
||
continue;
|
||
}
|
||
else{
|
||
echo "执行结果:$img_path 生成 image_key:$image_key<br>";
|
||
}
|
||
|
||
$this->load->library('qyrobot', array('test'=>$test));
|
||
$msg = [
|
||
"msg_type" => "image",
|
||
"content" => [
|
||
"image_key" => $image_key,
|
||
]
|
||
];
|
||
$res_send = $this->qyrobot->send_fb($msg);
|
||
$res[] = $res_send;
|
||
}
|
||
|
||
$redis->save($redisKey, 1, 60 * 10);
|
||
$res['img_path'] = $img_path;
|
||
$res['image_key'] = $image_key;
|
||
if ($params['sd']) {
|
||
echo "执行结果:<br>";
|
||
echo json_encode($res, JSON_UNESCAPED_UNICODE);
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 添加成本数据
|
||
* @return void
|
||
*/
|
||
public function cost(){
|
||
$this->load->model('receiver/order/receiver_order_bills_model', 'order_bills_model');
|
||
$this->load->model('receiver/order/receiver_order_loans_model','order_loans_model');
|
||
$this->load->model('receiver/order/receiver_order_datas_model');
|
||
$this->load->model("biz/biz_model");
|
||
$this->load->model('biz/biz_settle_srv_model');
|
||
$this->load->model('auto/auto_business_model');
|
||
$this->load->model('items/items_cost_model');
|
||
$this->load->model('sys/sys_finance_model');
|
||
$page = $this->input->get('page');
|
||
$size = $this->input->get('size');
|
||
$id = $this->input->get('id');
|
||
!$page && $page = 1;
|
||
!$size && $size = 5;
|
||
$where = [
|
||
'(status = 1 or ( status = 0 and id in (select o_id from `lc_receiver_order_status` where (pid_status = 4 and `status` in (1,2)) or (pid_status = 3 and `status` = 1) group by o_id having count(distinct pid_status) = 2 )) or ( status = 0 and id in (select id from lc_receiver_orders_v2 where if_usedcar = 1 and bill_time > 0 )) )' => null,
|
||
'id not in (select o_id from lc_items_cost)' => null,
|
||
'item_id>' => 0,
|
||
'id>=' => Orders_v2_entity::V2_START_ID
|
||
];
|
||
$id && $where['id'] = $id;
|
||
$rows = $this->receiver_orders_v2_model->select($where,'',$page,$size);
|
||
if($rows){
|
||
foreach ($rows as $item) {
|
||
$biz = $this->biz_model->get(['id'=>$item['biz_id']]);
|
||
$money_json = json_decode($item['money_json'],true);
|
||
$info_json = json_decode($item['info_json'],true);
|
||
$bill_time_month = date('Y-m-d',strtotime($item['bill_time']));
|
||
$add_data = [
|
||
'o_id' => $item['id'],
|
||
'price' => $this->orders_v2_entity->total_price($item['id'],$item['money_json']),
|
||
'c_time' => time()
|
||
];
|
||
$item['item_id'] && $add_data['item_id'] = $item['item_id'];
|
||
$bill_info = $this->order_bills_model->bill_info($item['id']);
|
||
$bill_info['销货单位名称'] && $add_data['bill_name'] = $bill_info['销货单位名称'];
|
||
$bill_info['开票日期'] && $add_data['bill_time'] = $bill_info['开票日期'];
|
||
$bill_info['价税合计(小写)'] && $add_data['bill_price'] = str_replace('¥','',$bill_info['价税合计(小写)']);
|
||
$srv_json = [];
|
||
//精品
|
||
$srv_json['price_fine_select'] = $money_json['price_fine_select'] ? $money_json['price_fine_select'] : 0;
|
||
//保险
|
||
$img_data = $this->receiver_order_datas_model->get(['o_id'=>$item['id'],'status>='=>0]);
|
||
$insurance_img = json_decode($img_data['insurance_img'],true);
|
||
$business_img = json_decode($img_data['business_img'],true);
|
||
$srv_json['insurance_price'] = $insurance_img['price'] ? $insurance_img['price'] : '';
|
||
$srv_json['insurance_product'] = $insurance_img['product'] ? $insurance_img['product'] : '';
|
||
$srv_json['business_price'] = $business_img['price'] ? $business_img['price'] : '';
|
||
$srv_json['business_product'] = $business_img['product'] ? $business_img['product'] : '';
|
||
//获取创建订单时商务政策
|
||
$where = [
|
||
'id' => $info_json['business_id'],
|
||
];
|
||
$b_row_one = $this->auto_business_model->get($where);
|
||
$srv_json['ori_price'] = $b_row_one['price_car'] ? $b_row_one['price_car'] : '';
|
||
$srv_json['price_floor'] = $b_row_one['price_floor'] ? $b_row_one['price_floor'] : 0;
|
||
$srv_json['profix_car'] = $biz['type']==2 ? $b_row_one['proxy_profix_car'] : $b_row_one['profix_car'];
|
||
$srv_json['insurance_ins_price'] = $srv_json['insurance_fd'] = 0;
|
||
|
||
/*
|
||
水平
|
||
品牌店按现有逻辑 (1)
|
||
合伙店取商务政策的固定值 (2)
|
||
代理店没有水平业务 (3)
|
||
*/
|
||
if ($biz['type']==2){
|
||
$add_data['insurance_price'] = $b_row_one['profix_insure'] ? $b_row_one['profix_insure'] : 0.00;
|
||
$add_data['fee_carno_price'] = $b_row_one['profix_carno'] ? $b_row_one['profix_carno'] : 0.00;
|
||
$add_data['loan_price'] = $b_row_one['profix_loan'] ? $b_row_one['profix_loan'] : 0.00;
|
||
}
|
||
elseif ($biz['type']==3){
|
||
$add_data['insurance_price'] = 0.00;
|
||
$add_data['fee_carno_price'] = 0.00;
|
||
$add_data['loan_price'] = 0.00;
|
||
}
|
||
|
||
if($insurance_img){//强险
|
||
$time = strtotime($insurance_img['date']);
|
||
$where = [
|
||
'biz_id' => $item['biz_id'],
|
||
'title' => $insurance_img['product'],
|
||
'type' => 2,
|
||
"json_extract(jsondata, '$.type') = '2'" => null,
|
||
"json_extract(jsondata, '$.s_time') >= '{$time}'" => null,
|
||
"json_extract(jsondata, '$.e_time') <= '{$time}'" => null
|
||
];
|
||
$fd_row = $this->biz_settle_srv_model->get($where);
|
||
if(!$fd_row){
|
||
$where = [
|
||
'biz_id' => $item['biz_id'],
|
||
'title' => $insurance_img['product'],
|
||
'type' => 2,
|
||
'is_def' => 1,
|
||
"json_extract(jsondata, '$.type') = '2'" => null,
|
||
];
|
||
$fd_row = $this->biz_settle_srv_model->get($where);
|
||
}
|
||
$fd_jsondata = json_decode($fd_row['jsondata'],true);
|
||
$srv_json['insurance_fd'] = $fd_jsondata['rebate'] ? $fd_jsondata['rebate'] : 0;
|
||
$qx_fd = $fd_jsondata['rebate']/100;
|
||
$srv_json['insurance_ins_price'] = floatval($insurance_img['price']) * $qx_fd;
|
||
}
|
||
$srv_json['business_ins_price'] = $srv_json['business_fd'] = 0;
|
||
if($business_img){//商业险
|
||
$time = strtotime($business_img['date']);
|
||
$where = [
|
||
'biz_id' => $item['biz_id'],
|
||
'title' => $business_img['product'],
|
||
'type' => 2,
|
||
"json_extract(jsondata, '$.type') = '1'" => null,
|
||
"json_extract(jsondata, '$.s_time') >= '{$time}'" => null,
|
||
"json_extract(jsondata, '$.e_time') <= '{$time}'" => null
|
||
];
|
||
$bis_fd_row = $this->biz_settle_srv_model->get($where);
|
||
if(!$bis_fd_row){
|
||
$where = [
|
||
'biz_id' => $item['biz_id'],
|
||
'title' => $business_img['product'],
|
||
'type' => 2,
|
||
'is_def' => 1,
|
||
"json_extract(jsondata, '$.type') = '1'" => null,
|
||
];
|
||
$bis_fd_row = $this->biz_settle_srv_model->get($where);
|
||
}
|
||
$bis_fd_jsondata = json_decode($bis_fd_row['jsondata'],true);
|
||
$srv_json['business_fd'] = $bis_fd_jsondata['rebate'] ? $bis_fd_jsondata['rebate'] : 0;
|
||
$bis_fd = $bis_fd_jsondata['rebate']/100;
|
||
$srv_json['business_ins_price'] = floatval($business_img['price'])*$bis_fd;
|
||
}
|
||
//挂牌
|
||
$srv_json['fee_carno'] = $money_json['fee_carno'] ? $money_json['fee_carno'] : 0;
|
||
$srv_json['cb_fee_carno'] = 0;
|
||
if($money_json['fee_carno']>0){
|
||
$where = [
|
||
'biz_id' => $item['biz_id'],
|
||
'type' => 1,
|
||
'status' => 1,
|
||
's_effect_time>=' => date('Y-m-01',strtotime($item['bill_time'])),
|
||
's_effect_time<=' => date('Y-m-t',strtotime($item['bill_time'])),
|
||
];
|
||
$free_row = $this->biz_settle_srv_model->get($where);
|
||
if(!$free_row){
|
||
$free_row = $this->biz_settle_srv_model->get(['biz_id'=>$item['biz_id'],'is_def'=>1,'status'=>1,'type'=>1]);
|
||
}
|
||
$free_jsondata = json_decode($free_row['jsondata'],true);
|
||
$srv_json['cb_fee_carno'] = $free_jsondata['price'] ? $free_jsondata['price'] : 0;
|
||
}
|
||
//贷款信息
|
||
$srv_json['loan_product'] = '';
|
||
$srv_json['loan_srv_price'] = $srv_json['loan_num'] = $srv_json['loan_price'] = 0;
|
||
if($money_json['price_loan']>0){
|
||
$srv_json['loan_price'] = $money_json['price_loan'];
|
||
$loan_row = $this->order_loans_model->get(['o_id'=>$item['id']]);
|
||
$finance_id = $item['finance_id'];
|
||
$srv_json['loan_product'] = ''; # $loan_row['title'];
|
||
if ($finance_id){
|
||
$finance_row = $this->sys_finance_model->get(array('id'=>$finance_id),'title');
|
||
$srv_json['loan_product'] = $finance_row ? $finance_row['title'] : '';
|
||
}
|
||
$srv_json['loan_num'] = $finance_num = $loan_row['num'] ? $loan_row['num'] : 36;
|
||
$where = [
|
||
'biz_id' => $item['biz_id'],
|
||
'type' => 3,
|
||
's_effect_time' => $bill_time_month,
|
||
"json_extract(jsondata, '$.finance_id') = '{$finance_id}'" => null,
|
||
"json_extract(jsondata, '$.finance_num') = '{$finance_num}'" => null,
|
||
];
|
||
$fd_row = $this->biz_settle_srv_model->get($where);
|
||
if(!$fd_row){
|
||
$fd_row = $this->biz_settle_srv_model->get(['biz_id'=>$item['biz_id'],'is_def'=>1,'status'=>1,'type'=>3]);
|
||
}
|
||
$fd_jsondata = json_decode($fd_row['jsondata'],true);
|
||
$loan_fd = $fd_jsondata['rebate'] ? $fd_jsondata['rebate']/100:0;
|
||
$profix_loan = $money_json['price_loan']*$loan_fd;
|
||
//获取贷款手续费
|
||
$srv_loan = 0;
|
||
$s_json = json_decode($item['srv_ids'],true);
|
||
if($s_json){
|
||
foreach ($s_json as $v2) {
|
||
if($v2['key']=='price_finance'){
|
||
$srv_loan = $v2['price'];
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
$srv_json['loan_srv_price'] = $profix_loan + $srv_loan;
|
||
}
|
||
$sum = $this->app_liche_orders_model->sum('total_price', ['o_id'=>$item['id'],'status'=>1,'pay_price <>'=>0]);
|
||
$pay_price = $sum['total_price'] ? $sum['total_price'] : 0;
|
||
$need_price = $this->orders_v2_entity->recevable_price($item['id']);
|
||
$srv_json['if_pay'] = $pay_price>=$need_price ? 1 : 0;
|
||
$add_data['srv_json'] = json_encode($srv_json,JSON_UNESCAPED_UNICODE);
|
||
$id = $this->items_cost_model->add($add_data);
|
||
if(is_numeric($id)){
|
||
$this->items_cost_model->update_total($id);
|
||
echo "添加成功订单id:{$item['id']}<br>";
|
||
}else{
|
||
echo "添加失败订单id:{$item['id']}<br>";
|
||
}
|
||
}
|
||
}else{
|
||
echo "数据不存在";
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 修复成本数据的非品牌店的水平业务
|
||
* @return void
|
||
*/
|
||
public function cost_repair_spyw(){
|
||
$this->load->model("biz/biz_model");
|
||
$this->load->model('auto/auto_business_model');
|
||
$this->load->model('items/items_cost_model');
|
||
$where = [
|
||
'(status = 1 or ( status = 0 and id in (select o_id from `lc_receiver_order_status` where (pid_status = 4 and `status` in (1,2)) or (pid_status = 3 and `status` = 1) group by o_id having count(distinct pid_status) = 2 ) ))' => null,
|
||
'id in (select o_id from lc_items_cost)' => null,
|
||
'item_id>' => 0,
|
||
'id>=' => Orders_v2_entity::V2_START_ID,
|
||
'biz_id in (select id from lc_biz where type <> 1)' => null,
|
||
];
|
||
$rows = $this->receiver_orders_v2_model->select($where,'',0,0);
|
||
if (!$rows){
|
||
echo "数据不存在";exit();
|
||
}
|
||
|
||
foreach ($rows as $item) {
|
||
$o_id = $item['id'];
|
||
$cost = $this->items_cost_model->get(['o_id'=>$o_id]);
|
||
if (!$cost){
|
||
echo "{$o_id}, cost not found<br>";
|
||
}
|
||
|
||
$biz = $this->biz_model->get(['id'=>$item['biz_id']]);
|
||
if (!$biz){
|
||
echo "{$o_id}, biz not found, biz_id: {$item['biz_id']}<br>";
|
||
}
|
||
|
||
$info_json = json_decode($item['info_json'],true);
|
||
//获取创建订单时商务政策
|
||
$b_row_one = $this->auto_business_model->get(['id' => $info_json['business_id']]);
|
||
if (!$b_row_one){
|
||
echo "{$o_id}, business not found, business_id: {$item['business_id']}<br>";
|
||
}
|
||
|
||
/*
|
||
水平
|
||
品牌店按现有逻辑 (1)
|
||
合伙店取商务政策的固定值 (2)
|
||
代理店没有水平业务 (3)
|
||
*/
|
||
$add_data = [];
|
||
if ($biz['type']==2){
|
||
$add_data['insurance_price'] = $b_row_one['profix_insure'] ? $b_row_one['profix_insure'] : 0.00;
|
||
$add_data['fee_carno_price'] = $b_row_one['profix_carno'] ? $b_row_one['profix_carno'] : 0.00;
|
||
$add_data['loan_price'] = $b_row_one['profix_loan'] ? $b_row_one['profix_loan'] : 0.00;
|
||
}
|
||
elseif ($biz['type']==3){
|
||
$add_data['insurance_price'] = 0.00;
|
||
$add_data['fee_carno_price'] = 0.00;
|
||
$add_data['loan_price'] = 0.00;
|
||
}
|
||
echo "{$o_id}, biz_type: {$biz['type']}<br>";
|
||
|
||
$id = $cost['id'];
|
||
if ($add_data){
|
||
$res = $this->items_cost_model->update($add_data, array('id'=>$id));
|
||
$sql = $this->items_cost_model->db->last_query();
|
||
$res = is_numeric($res) ? is_numeric($res) : 0;
|
||
echo "{$o_id}, cost {$id} update: {$res}, ({$sql})<br>";
|
||
}
|
||
else{
|
||
echo "{$o_id}, cost {$id} update: ignore<br>";
|
||
}
|
||
|
||
$res = $this->items_cost_model->update_total($id);
|
||
echo "{$o_id}, cost {$id} update_total: {$res}<br><br>";
|
||
}
|
||
echo "repair ".count($rows)." rows ok!";
|
||
}
|
||
|
||
public function cost_repair_loan_product(){
|
||
$this->load->model('items/items_cost_model');
|
||
$sql = "
|
||
select c.id, c.o_id, c.srv_json, JSON_UNQUOTE(JSON_EXTRACT(c.srv_json,'$.loan_product')) as loan_product, o.payway, o.finance_id, f.title
|
||
from lc_items_cost c
|
||
left join lc_receiver_orders_v2 o on c.o_id = o.id
|
||
left join lc_sys_finance f on f.id = o.finance_id
|
||
where o.finance_id > 0
|
||
and JSON_UNQUOTE(JSON_EXTRACT(c.srv_json,'$.loan_product')) <> f.title
|
||
";
|
||
$rows = $this->items_cost_model->db->query($sql)->result_array();
|
||
if (!$rows){
|
||
echo "数据不存在";exit();
|
||
}
|
||
|
||
foreach ($rows as $row){
|
||
$id = $row['id'];
|
||
$o_id = $row['o_id'];
|
||
$loan_product = $row['title'];
|
||
if (!$loan_product){
|
||
echo "{$id}, o_id: {$o_id}, title not found <br>";
|
||
continue;
|
||
}
|
||
|
||
$srv_json = json_decode($row['srv_json'],true);
|
||
$srv_json['loan_product'] = $loan_product;
|
||
$upd_data['srv_json'] = json_encode($srv_json,JSON_UNESCAPED_UNICODE);
|
||
$res = $this->items_cost_model->update($upd_data, array('id'=>$id));
|
||
echo "{$id}, o_id: {$o_id}, update: {$res}<br>";
|
||
}
|
||
|
||
echo "repair ".count($rows)." rows ok!";
|
||
}
|
||
}
|