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');
}
public function index(){
// $size = $this->input->get('size');
// !$size && $size = 5;
//
// $t1 = 'lc_receiver_orders';
// $t2 = 'lc_receiver_orders_v2';
//
// $fields = "$t1.*";
// $where = [
// "$t1.status>=" => 0,
// "$t2.id is null" => null
// ];
//
// $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){
// echo "执行old_id:{$val['id']}
";
// if($val['status']==7){
// $status = 2;
// }elseif($val['status']==6){
// $status = 1;
// }else{
// $status = 0;
// }
// $money_json = json_decode($val['money_json'],true);
// !$money_json['price_book'] && $money_json['price_book'] = $val['deposit'];
// $data = [
// 'id' => $val['id'],
// 'sid' => $val['sid'],
// 'clue_id' => $val['clue_id'],
// 'customer_id' => $val['rid'],
// 'name' => $val['name'],
// 'mobile' => $val['mobile'],
// 'main_type' => $val['main_type'],
// 'payway' => $val['payway'],
// 'finance_id' => $val['finance_id'],
// 'srv_ids' => $val['srv_ids'],
// 'fines' => $val['fine_ids'],
// 'brand_id' => $val['brand_id'],
// 's_id' => $val['s_id'],
// 'v_id' => $val['v_id'],
// 'cor_id' => $val['cor_id'],
// 'incor_id' => $val['incor_id'],
// 'item_id' => $val['item_id'],
// 'biz_id' => $val['biz_id'],
// 'sale_id' => $val['admin_id'],
// 'info_json' => $val['info_json'],
// 'car_json' => $val['car_json'],
// 'money_json' => $val['money_json'],
// 'jsondata' => $val['jsondata'],
// 'delry_time' => $val['delry_time'],
// 'order_time' => $val['order_time'],
// 'bill_time' => $val['bill_time'],
// 'c_time' => $val['c_time'],
// 'u_time' => $val['u_time'],
// 'status' => $status
// ];
// $res = $this->receiver_orders_v2_model->add($data);
// if($res){
// echo "执行成功:{$val['id']}
";
// }else{
// echo "执行失败:{$val['id']}
";
// }
// }
//
// $where = [
// "$t1.status>=" => 0,
// "$t2.id is null" => null
// ];
//
// $this->db->from("$t1");
// $this->db->join("$t2", "$t2.id=$t1.id",'left');
//
// $this->db->select($fields);
// $this->db->where($where);
// $res = $this->db->count_all_results();
// echo "剩余:{$res}
";
// }
}
public function up_pay_status(){
// $page = $this->input->get('page');
// $size = $this->input->get('size');
// !$page && $page = 1;
// !$size && $size = 20;
//
// $where = [
// 'id>=' => 10000,
// 'status>=' => 0
// ];
// $rows = $this->receiver_orders_v2_model->select($where,'id asc',$page,$size);
// if($rows){
// foreach($rows as $key => $val){
// $if_pay = $this->app_liche_orders_model->count(['o_id'=>$val['id'],'status'=>1]);
// $s_row = $this->receiver_order_status_model->count(['o_id'=>$val['id'],'pid_status'=>0,'status'=>1]);
// if($if_pay && !$s_row){
// $data = [
// 'o_id' => $val['id'],
// 'pid_status' => 0,
// 'status' => 1,
// 'c_time' => time()
// ];
// $res = $this->receiver_order_status_model->add($data);
// echo "update o_id:{$val['id']}
";
// }else{
// echo "undo o_id:{$val['id']}
";
// }
// }
// }else{
// echo 'finish';
// }
}
//更新旧订单数据状态
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 up_order_time(){
// $size = $this->input->get('size');
// !$size && $size = 20;
//
// $t1 = 'lc_receiver_order_status';
// $t2 = 'lc_receiver_orders_v2';
//
// $fields = "$t2.*";
// $where = [
// "$t1.pid_status" => 0,
// "$t1.status" => 1,
// "$t2.id>=" => 10000,
// "$t2.order_time" => '0000-00-00 00:00:00',
// ];
//
// $this->db->from("$t1");
// $this->db->join("$t2", "$t2.id=$t1.o_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){
// $where = [
// 'o_id'=>$val['id'],
// 'status'=>1,
// "pay_time <>" => '0000-00-00 00:00:00',
// ];
// $pay_row = $this->app_liche_orders_model->select($where,'pay_time asc',1,1);
// if($pay_row){
// $order_time = $pay_row[0]['pay_time'];
// $res = $this->receiver_orders_v2_model->update(['order_time'=>$order_time],['id'=>$val['id']]);
// echo "订单id:{$val['id']},更新{$res}
";
// }else{
// echo "订单id:{$val['id']},未找到支付订单
";
// }
// }
// }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);
}
}
//更新bd
public function car_img(){
// $oid = $this->input->get('oid');
// $page = $this->input->get('page');
// $size = $this->input->get('size');
// !$page && $page = 1;
// !$size && $size = 10;
// $where = [
// "ins_img <> ''" => null,
// "o_id>=" => 1000,
// ];
// $oid && $where['o_id'] = $oid;
// $rows = $this->receiver_order_datas_model->select($where,'id asc',$page,$size);
// if($rows){
// foreach ($rows as $item) {
// $res = $this->order_datas_entity->orc_ins_img($item['o_id']);
// echo "{$item['o_id']}执行结果:{$res}";
// }
// }else{
// echo "no data";
// }
}
//车型车牌号码
public function up_num(){
// $oid = $this->input->get('oid');
// $page = $this->input->get('page');
// $size = $this->input->get('size');
// !$page && $page = 1;
// !$size && $size = 10;
// $where = [
// "car_img <> ''" => null,
// "o_id>=" => 1000,
// ];
// $oid && $where['o_id'] = $oid;
// $rows = $this->receiver_order_datas_model->select($where,'id asc',$page,$size);
// if($rows){
// foreach ($rows as $item) {
// $res = $this->order_datas_entity->up_car_num($item['o_id']);
// echo "{$item['o_id']}执行结果:{$res}";
// }
// }else{
// echo "no data";
// }
}
//更新交付截止时间
public function up_otime(){
// $this->load->model('auto/auto_business_model');
// $page = $this->input->get('page');
// $size = $this->input->get('size');
// !$page && $page = 1;
// !$size && $size = 20;
//
// $where = [
// 'id>=' => 10000,
// ];
// $rows = $this->receiver_orders_v2_model->select($where,'id asc',$page,$size);
// if($rows){
// foreach($rows as $key => $val){
// $car_json = json_decode($val['car_json'],true);
// $info_json = json_decode($val['info_json'],true);
// $business_id = $info_json['business_id'];
// $over_time = '0000-00-00 00:00:00';
// if($business_id){
// $business_row = $this->auto_business_model->get(['id'=>$business_id]);
//
// if($business_row['delivery_day']){
// $contract = $this->receiver_order_contracts_model->get(['o_id' => $val['id'],'type in (0,1)' => null]);
// $s_time = $contract ? $contract['c_time'] : $val['c_time'];
// $over_time = date('Y-m-d H:i:s',$s_time+$business_row['delivery_day']*24*60*60); //交付截止时间
// }
//
// $car_json['delivery_day'] = $business_row['delivery_day'];
// }
// $update = [
// 'car_json' => json_encode($car_json,JSON_UNESCAPED_UNICODE)
// ];
// $over_time && $update['over_time'] = $over_time;
// if($val['main_type']==1){
// $update['owner_name'] = $info_json['c_company'];
// }
// if($update){
// $this->receiver_orders_v2_model->update($update,['id'=>$val['id']]);
// echo "update id:".$val['id']."
";
// }else{
// echo "not update id:".$val['id']."
";
// }
// }
// }else{
// echo 'finish';
// }
}
//更新保险图片
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}
";
}
$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');
if ( !($hour >= 17.50 && $hour <= 18.0 || $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 '
';echo '
';
if ($img_path_ding){
echo '
';echo '
';
$img_path_arr[] = $img_path_ding;
}
if ($img_path_piao){
echo '
';echo '
';
$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
";
continue;
}
else{
echo "执行结果:$img_path 生成 image_key:$image_key
";
}
$this->load->library('qyrobot', array('test'=>1));
$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 "执行结果:
";
echo json_encode($res, JSON_UNESCAPED_UNICODE);
}
}
}