login_white = array();//登录白名单 $this->check_status = array();//用户状态校验 $this->check_mobile = array();//需要手机号 $this->check_headimg = array();//授权微信信息 $this->load->model('receiver/receiver_customers_model', 'customers_model'); $this->load->model('receiver/order/receiver_orders_model'); $this->load->model('receiver/order/receiver_orders_v2_model', 'orders_model'); $this->load->model('receiver/order/receiver_order_datas_model'); $this->load->model('receiver/order/receiver_order_status_model'); $this->load->model('receiver/order/receiver_order_deliverys_model', 'order_deliverys_model'); $this->load->model('receiver/order/receiver_order_loans_model', 'order_loans_model'); $this->load->model('receiver/order/receiver_order_bills_model', 'order_bills_model'); $this->load->model('auto/auto_series_model'); $this->load->model('auto/auto_attr_model'); $this->load->model('auto/auto_cars_model'); $this->load->model('auto/auto_business_model'); $this->load->model('auto/auto_option_model'); $this->load->model("biz/biz_model"); $this->load->model('items/items_model'); //$this->load->model('sys/sys_finance_model'); $this->load->model('sys/sys_supplier_model'); $this->load->model('sys/sys_city_model'); $this->load->model('app/liche/app_liche_users_model'); $this->load->model('app/liche/app_liche_orders_model'); $this->load->library('receiver/orders_entity'); $this->load->library('receiver/orders_v2_entity'); $this->load->library('receiver/customers_entity'); $this->load->library('receiver/order_datas_entity'); $this->load->library('receiver/orders_status_entity'); $this->biz_id = $this->get_biz_id(); } protected function get() { $id = $this->input_param('id'); if ($id) { return $this->detail($id); } else { return $this->lists(); } } //创建订单 protected function post() { $cus_id = $this->input_param('cus_id'); $car_id = $this->input_param('car_id'); $color_id = $this->input_param('color_id'); $incolor_id = $this->input_param('incolor_id'); $v_id = $this->input_param('v_id'); $deposit = $this->input_param('deposit'); $payway = $this->input_param('payway'); $main_type = $this->input_param('main_type'); $name = trim($this->input_param('name')); $mobile = trim($this->input_param('mobile')); $cardid = trim($this->input_param('cardid')); $owner_name = trim($this->input_param('owner_name')); $owner_mobile = trim($this->input_param('owner_mobile')); $owner_cardid = trim($this->input_param('owner_cardid')); $company = $this->input_param('company'); $c_credit = $this->input_param('credit'); $delry_time = $this->input_param('delry_time'); $finance_id = $this->input_param('finance_id'); $disc_money = floatval($this->input_param('disc_money'));//优惠金额 $disc_fine_money = floatval($this->input_param('disc_fine_money'));//精品优惠金额 $if_fine = $this->input_param('if_fine'); $srv_arr = $this->input_param('srv_arr'); $fines = $this->input_param('fines'); $address = $this->input_param('address'); $business_id = $this->input_param('business_id'); //商务政策id $car_city_id = $this->input_param('c_city_id');//上牌城市 $pro = $this->input_param('pro'); //省市数组 $sa = $this->input_param('sa'); //补充协商 $if_local_bill = $this->input_param('if_local_bill');//是否需要开具本地发票 $if_zero_firstpay = $this->input_param('if_zero_firstpay');//$payway=0下是否0首付;0首付区分:payway==0 && money_json.price_book==0 //$if_zero_firstpay = 1; $deposit = 0; // 模拟0首付 $optinos_ids = $this->input_param('options_ids');//选装id 数组 $row = $this->customers_model->get(['id' => $cus_id]); $series_row = $this->auto_series_model->get(['id' => $car_id]); $business_row = $this->auto_business_model->get(['id' => $business_id]); if (!$row || !$series_row || !$delry_time || !$name || !$mobile || !$business_row || !$if_zero_firstpay && !$deposit) { throw new Exception('参数错误', ERR_PARAMS_ERROR); } if ($if_local_bill && !$car_city_id) { throw new Exception('请填写上牌城市', ERR_PARAMS_ERROR); } if ($main_type) {//公司 if (!$company || !$c_credit) { throw new Exception('请填写公司信息', ERR_PARAMS_ERROR); } $owner_name = $company; } else { //个人 if (!$cardid || !$owner_name || !$owner_mobile || !$owner_cardid) { throw new Exception('参数错误', ERR_PARAMS_ERROR); } //同个品牌一个身份证只能下一单 // $where = [ // 'brand_id' => $series_row['brand_id'], // "JSON_EXTRACT(info_json,'$.c_owner_cardid')='{$owner_cardid}'" => null, // 'status in (0,1)' => null // ]; // if ($this->orders_model->count($where)) { // throw new Exception('一个客户只能享受一次国补,请联系管理员', ERR_PARAMS_ERROR); // } } if (!$if_zero_firstpay && $deposit < 1000) { throw new Exception('定金不得少于1000', ERR_PARAMS_ERROR); } $biz = $this->biz_model->get(['id' => $row['biz_id']], 'id,city_id,type'); $car_row = $this->auto_cars_model->get(['brand_id' => $series_row['brand_id'], 's_id' => $series_row['id'], 'v_id' => $v_id], '', $biz['city_id']); if (!$car_row) { throw new Exception('参数错误', API_CODE_FAIL); } if($biz['id']!=160){ $can_dis_money = $business_row['price_car'] - $business_row['price_floor']; //可优惠金额 if ($biz['type']==3 && $business_row['proxy_type'] == 1){ # 选择【返佣】时:代理店优惠额度 = 售价 - 底价 # 选择【票折】时:代理店优惠额度 = 售价 - (底价-代理店单车毛利) $can_dis_money = $can_dis_money + $business_row['proxy_profix_car']; } if ($can_dis_money > 0) { #if ($disc_money && $business_row['price_floor'] > $business_row['price_car'] - $disc_money) { if ($disc_money && $disc_money > $can_dis_money) { throw new Exception('车辆售价不得低于车辆底价,请重新填写优惠信息', API_CODE_FAIL); } } else { if ($disc_money) throw new Exception('当前车型没有优惠额度', API_CODE_FAIL); } } if (!$payway && $finance_id) { //分期 //$finance_row = $this->sys_finance_model->get(['id' => $finance_id, 'status' => 1]); $finance_row = $this->sys_supplier_model->get(['id' => $finance_id, 'status' => 1]); if (!$finance_row) { throw new Exception('参数错误', ERR_PARAMS_ERROR); } } //东风品牌,门店类型=品牌店or合伙店,交车时长-10 //if($series_row['brand_id']==1 && $business_row['delivery_day']>10 && in_array($biz['type'],[1,2])){ // $business_row['delivery_day'] -= 10; //} $over_time = date('Y-m-d H:i:s', time() + $business_row['delivery_day'] * 24 * 60 * 60); //交付截止时间 $data = [ 'sid' => create_order_no(350200, $this->app_key), 'customer_id' => $row['id'], 'name' => $name ? $name : $row['name'], 'mobile' => $mobile ? $mobile : $row['mobile'], 'biz_id' => $this->biz_id, 'brand_id' => $series_row['brand_id'], 's_id' => $series_row['id'], 'v_id' => $v_id, 'cor_id' => $color_id, 'incor_id' => $incolor_id, 'admin_id' => $this->session['uid'], 'sale_id' => $this->session['uid'], 'over_time' => $over_time, 'c_time' => time() ]; $owner_name && $data['owner_name'] = $owner_name; $owner_mobile && $data['owner_mobile'] = $owner_mobile; $row['rid'] && $data['clue_id'] = $row['rid']; $payway && $data['payway'] = 1; $if_fine && $data['if_fine'] = 1; $main_type && $data['main_type'] = 1; $delry_time && $data['delry_time'] = $delry_time; $fines && $data['fines'] = json_encode($fines, JSON_UNESCAPED_UNICODE); $info_json = []; # 20230222 地址的值用身份证上面的地址 /*if ($pro) { $info_json['pro'] = $pro; $address = implode(' ', $pro) . $address; }*/ $address && $info_json['c_address'] = $address; $cardid && $info_json['c_cardid'] = $cardid; $owner_cardid && $info_json['c_owner_cardid'] = $owner_cardid; $c_credit && $info_json['c_credit'] = $c_credit; $company && $info_json['c_company'] = $company; $business_id && $info_json['business_id'] = $business_id; $car_city_id && $info_json['car_city_id'] = $car_city_id; $info_json && $data['info_json'] = json_encode($info_json, JSON_UNESCAPED_UNICODE); $finance_row && $data['finance_id'] = $finance_row['id']; $if_local_bill && $data['if_local_bill'] = 1; //获取金额json数据 $orders_entity = new orders_v2_entity(); $color_arr = json_decode($business_row['colors'], true); $price_color = in_array($color_id, $color_arr) ? $business_row['price_color'] : 0; $price_coplus = $main_type ? $business_row['price_coplus'] : 0; $money_json = [ 'price_car' => $business_row['price_car'], 'price_book' => $deposit ? $deposit : 0, 'price_insure' => $car_row['price_insure'], 'price_fine' => $car_row['price_fine'], 'price_discount' => $disc_money ? $disc_money : 0, 'price_intention' => 0, 'price_fine_discount' => $disc_fine_money ? $disc_fine_money : 0, 'price_fine_select' => 0, 'price_color' => $price_color, 'price_coplus' => $price_coplus, 'price_options' => 0 ]; if ($srv_arr) { foreach ($srv_arr as $item) { $money_json[$item['key']] = $item['price']; $item['id'] == 1 && $data['if_insure'] = 1; $item['id'] == 2 && $data['if_num'] = 1; } } $data['srv_ids'] = $srv_arr ? json_encode($srv_arr, JSON_UNESCAPED_UNICODE) : ""; if ($fines) { foreach ($fines as $item) { if ($item['price']) { $money_json['price_fine_select'] += $item['price']; } } } //选装金额 if($optinos_ids){ $data['option_ids'] = json_encode($optinos_ids); $optinos_ids_str = implode(',',$optinos_ids); $optinos_ids_str && $optinos_rows = $this->auto_option_model->select(["id in ({$optinos_ids_str})"=>null],'','','','id,price'); $optinos_rows && $money_json['price_options'] = array_sum(array_column($optinos_rows,'price')); } $car_json = $money_json; $car_json['delivery_day'] = $business_row['delivery_day']; $data['money_json'] = json_encode($money_json, JSON_UNESCAPED_UNICODE); $data['car_json'] = json_encode($car_json, JSON_UNESCAPED_UNICODE); $this->ck_money($money_json, $srv_arr, $biz); $o_id = $this->orders_model->add($data); if (is_numeric($o_id)) { $userinfo = $this->app_liche_users_model->get(['mobile' => $data['mobile']], 'id'); $this->orders_v2_entity->add_book_order($o_id, $userinfo['id']); if ($payway) { //全款服务费和尾款订单 $this->orders_v2_entity->add_order($o_id, $userinfo['id']); } //0首付 - 已下定 if ($if_zero_firstpay){ $this->orders_status_entity->set_status($o_id,0,1); } //更新客户下单时间 $this->customers_model->update(array('order_time' => date('Y-m-d H:i:s')), ['id' => $cus_id]); $this->customers_entity->add_log($cus_id, $this->session['uid'], $this->session['uname'], '生成订单', 6); //补充协商 $sa && $this->order_datas_entity->up_data($o_id, ['sa' => $sa]); return ['id' => $o_id, 'pay_img' => $orders_entity->pay_img($o_id)]; } else { throw new Exception('创建失败', ERR_PARAMS_ERROR); } } //创建意向金订单 protected function post_inten() { $cus_id = $this->input_param('cus_id'); $name = $this->input_param('name'); $mobile = $this->input_param('mobile'); $cardid = $this->input_param('cardid'); $owner_name = $this->input_param('owner_name'); $owner_mobile = $this->input_param('owner_mobile'); $owner_cardid = $this->input_param('owner_cardid'); $main_type = $this->input_param('main_type'); $company = $this->input_param('company'); $c_credit = $this->input_param('credit'); $address = $this->input_param('address'); $car_city_id = $this->input_param('c_city_id');//上牌城市 $pro = $this->input_param('pro'); //省市数组 $inten_money = floatval($this->input_param('inten_money'));//意向金 if (!$name || !$mobile || !$inten_money) { throw new Exception('参数错误', ERR_PARAMS_ERROR); } if ($main_type) { if (!$company || !$c_credit) { throw new Exception('请填写公司信息', ERR_PARAMS_ERROR); } } else { if (!$cardid || !$owner_name || !$owner_mobile || !$owner_cardid) { throw new Exception('参数错误', ERR_PARAMS_ERROR); } } $row = $this->customers_model->get(['id' => $cus_id]); if ($inten_money > 2000) { throw new Exception('意向金不得高于2000', ERR_PARAMS_ERROR); } $data = [ 'customer_id' => $cus_id, 'sid' => create_order_no(350200, $this->app_key), 'name' => $name ? $name : $row['name'], 'mobile' => $mobile ? $mobile : $row['mobile'], 'biz_id' => $this->biz_id, 'admin_id' => $this->session['uid'], 'sale_id' => $this->session['uid'], 'c_time' => time() ]; $main_type && $data['main_type'] = 1; $owner_name && $data['owner_name'] = $owner_name; $owner_mobile && $data['owner_mobile'] = $owner_mobile; $info_json = []; # 20230222 地址的值用身份证上面的地址 /*if ($pro) { $info_json['pro'] = $pro; $address = implode(' ', $pro) . $address; }*/ $address && $info_json['c_address'] = $address; $cardid && $info_json['c_cardid'] = $cardid; $owner_cardid && $info_json['c_owner_cardid'] = $owner_cardid; $company && $info_json['c_company'] = $company; $c_credit && $info_json['c_credit'] = $c_credit; $car_city_id && $info_json['car_city_id'] = $car_city_id; $info_json && $data['info_json'] = json_encode($info_json, JSON_UNESCAPED_UNICODE); $money_json['price_intention'] = $inten_money ? $inten_money : 0; $data['money_json'] = json_encode($money_json, JSON_UNESCAPED_UNICODE); $row['rid'] && $data['clue_id'] = $row['rid']; $o_id = $this->orders_model->add($data); if (!$o_id) { throw new Exception('创建失败', ERR_PARAMS_ERROR); } //更新客户下单时间 $this->customers_model->update(array('order_time' => date('Y-m-d H:i:s')), ['id' => $cus_id]); $this->customers_entity->add_log($cus_id, $this->session['uid'], $this->session['uname'], '生成订单', 6); //意向金订单 $orders_entity = new orders_v2_entity(); if ($inten_money) { $userinfo = $this->app_liche_users_model->get(['mobile' => $data['mobile']], 'id'); $orders_entity->c_intention($o_id, $userinfo['id'], $inten_money); } return ['id' => $o_id, 'pay_img' => $orders_entity->pay_img($o_id)]; } //修改订单信息 protected function put() { $id = $this->input_param('id'); $car_id = $this->input_param('car_id'); $color_id = $this->input_param('color_id'); $incolor_id = $this->input_param('incolor_id'); $v_id = $this->input_param('v_id'); $payway = $this->input_param('payway'); $delry_time = $this->input_param('delry_time'); $finance_id = $this->input_param('finance_id'); $deposit = floatval($this->input_param('deposit')); $disc_money = floatval($this->input_param('disc_money'));//优惠金额 $disc_fine_money = floatval($this->input_param('disc_fine_money'));//精品优惠金额 $if_fine = $this->input_param('if_fine'); $srv_arr = $this->input_param('srv_arr'); $fines = $this->input_param('fines'); $business_id = $this->input_param('business_id'); //商务政策id $sa = $this->input_param('sa'); //补充协商 $if_local_bill = $this->input_param('if_local_bill');//是否需要开具本地发票 $if_zero_firstpay = $this->input_param('if_zero_firstpay');//$payway=0下是否0首付;0首付区分:payway==0 && money_json.price_book==0 $optinos_ids = $this->input_param('options_ids');//选装id 数组 $row = $this->orders_model->get(['id' => $id]); $main_type = $row['main_type']; $series_row = $this->auto_series_model->get(['id' => $car_id]); $biz = $this->biz_model->get(['id' => $row['biz_id']], 'id,type,city_id'); $car_row = $this->auto_cars_model->get(['brand_id' => $series_row['brand_id'], 's_id' => $series_row['id'], 'v_id' => $v_id], '', $biz['city_id']); $info_json = json_decode($row['info_json'], true); //修改商务政策id if ($series_row['brand_id'] == $row['brand_id'] && $v_id != $row['v_id']) { $old_business_row = $this->auto_business_model->get(['id' => $info_json['business_id']]); if ($old_business_row) { $s_time = strtotime(date('Y-m-d 00:00:00', $old_business_row['s_effect_time'])); $e_time = strtotime(date('Y-m-d 23:59:59', $old_business_row['s_effect_time'])); $where = [ 'city_id' => $old_business_row['city_id'], 'brand_id' => $old_business_row['brand_id'], 's_id' => $series_row['id'], 'v_id' => $series_row['v_id'], 's_effect_time>=' => $s_time, 's_effect_time<=' => $e_time, ]; $new_business_row = $this->auto_business_model->get($where); $new_business_row && $business_id = $new_business_row['id']; } } $business_row = $this->auto_business_model->get(['id' => $business_id]); if (!$row || !$series_row || !$car_row || !$business_row) { throw new Exception('参数错误', ERR_PARAMS_ERROR); } if (!$if_zero_firstpay && $deposit < 1000) { throw new Exception('定金不得少于1000', ERR_PARAMS_ERROR); } if($biz['id']!=160){ $can_dis_money = $business_row['price_car'] - $business_row['price_floor']; //可优惠金额 if ($biz['type']==3 && $business_row['proxy_type'] == 1){ # 选择【返佣】时:代理店优惠额度 = 售价 - 底价 # 选择【票折】时:代理店优惠额度 = 售价 - (底价-代理店单车毛利) $can_dis_money = $can_dis_money + $business_row['proxy_profix_car']; } if ($can_dis_money > 0) { /*if ($disc_money && $car_row['price_floor'] > $car_row['price_car'] - $disc_money) { throw new Exception('车辆售价不得低于车辆底价,请重新填写优惠信息', API_CODE_FAIL); }*/ if ($disc_money && $disc_money > $can_dis_money) { throw new Exception('车辆售价不得低于车辆底价,请重新填写优惠信息', API_CODE_FAIL); } } else { if ($disc_money) throw new Exception('当前车型没有优惠额度', API_CODE_FAIL); } } if (!$payway && $finance_id) { //分期 //$finance_row = $this->sys_finance_model->get(['id' => $finance_id, 'status' => 1]); $finance_row = $this->sys_supplier_model->get(['id' => $finance_id, 'status' => 1]); if (!$finance_row) { throw new Exception('参数错误', ERR_PARAMS_ERROR); } } // if (!$main_type) {//个人 // //同个品牌一个身份证只能下一单 // $where = [ // 'brand_id' => $series_row['brand_id'], // "JSON_EXTRACT(info_json,'$.c_owner_cardid')='{$info_json['c_owner_cardid']}'" => null, // 'status in (0,1)' => null, // 'id!=' => $id, // ]; // if ($this->orders_model->count($where)) { // throw new Exception('一个客户只能享受一次国补,请联系管理员', ERR_PARAMS_ERROR); // } // } //东风品牌,门店类型=品牌店or合伙店,交车时长-10 //if($series_row['brand_id']==1 && $business_row['delivery_day']>10 && in_array($biz['type'],[1,2])){ // $business_row['delivery_day'] -= 10; //} $over_time = date('Y-m-d H:i:s', time() + $business_row['delivery_day'] * 24 * 60 * 60); //交付截止时间 $data = [ 'brand_id' => $series_row['brand_id'], 's_id' => $series_row['id'], 'v_id' => $v_id, 'cor_id' => $color_id, 'incor_id' => $incolor_id, 'payway' => $payway ? 1 : 0, 'if_insure' => 0, 'if_num' => 0, 'if_local_bill' => $if_local_bill ? 1 : 0, 'over_time' => $over_time, ]; $delry_time && $data['delry_time'] = $delry_time; $finance_row && $data['finance_id'] = $finance_row['id']; $data['if_fine'] = $if_fine ? 1 : 0; $data['fines'] = json_encode($fines, JSON_UNESCAPED_UNICODE); $color_arr = json_decode($business_row['colors'], true); //获取金额json数据 $money_json = json_decode($row['money_json'], true); $car_json = $money_json; $car_json['delivery_day'] = $business_row['delivery_day']; $data['car_json'] = json_encode($car_json, JSON_UNESCAPED_UNICODE); $money_json['price_car'] = $business_row['price_car']; $money_json['price_book'] = $deposit; $money_json['price_insure'] = $car_row['price_insure']; $money_json['price_fine'] = $car_row['price_fine']; $money_json['price_discount'] = $disc_money; $money_json['price_fine_discount'] = $disc_fine_money; $money_json['price_color'] = in_array($color_id, $color_arr) ? $business_row['price_color'] : 0; $money_json['price_coplus'] = $main_type ? $business_row['price_coplus'] : 0; if ($srv_arr) { $money_json['price_finance'] = $money_json['fee_carno'] = 0; foreach ($srv_arr as $item) { $money_json[$item['key']] = floatval($item['price']); $item['id'] == 1 && $data['if_insure'] = 1; $item['id'] == 2 && $data['if_num'] = 1; } } $data['srv_ids'] = $srv_arr ? json_encode($srv_arr, JSON_UNESCAPED_UNICODE) : ""; $money_json['price_fine_select'] = 0; if ($fines) { foreach ($fines as $item) { if ($item['price']) { $money_json['price_fine_select'] += floatval($item['price']); } } } $data['option_ids'] = json_encode($optinos_ids); $money_json['price_options'] = 0; //选装金额 if($optinos_ids){ $optinos_ids_str = implode(',',$optinos_ids); $optinos_ids_str && $optinos_rows = $this->auto_option_model->select(["id in ({$optinos_ids_str})"=>null],'','','','id,price'); $optinos_rows && $money_json['price_options'] = array_sum(array_column($optinos_rows,'price')); } if ($row['c_time'] >= strtotime('2022-04-08 14:43:00')) { $this->ck_money($money_json, $srv_arr, $biz); } $data['money_json'] = json_encode($money_json, JSON_UNESCAPED_UNICODE); $info_json['business_id'] = $business_id; $data['info_json'] = json_encode($info_json, JSON_UNESCAPED_UNICODE); $result = $this->orders_model->update($data, ['id' => $row['id']]); if ($result) { $this->orders_v2_entity->edit_order($data, $row, $this->session); //0首付 - 已下定 if ($if_zero_firstpay){ $this->orders_status_entity->set_status($row['id'],0,1); } //补充协商 $sa && $this->order_datas_entity->up_data($row['id'], ['sa' => $sa]); throw new Exception('修改成功', API_CODE_SUCCESS); } else { throw new Exception('修改失败', ERR_PARAMS_ERROR); } } private function detail($id) { $row = $this->orders_model->get(['id' => $id]); if (!$row) { throw new Exception('订单不存在', ERR_PARAMS_ERROR); } $orders_entity = new Orders_v2_entity(); $money_json = json_decode($row['money_json'], true); $info_json = json_decode($row['info_json'], true); $brand = $this->auto_brand_model->get(['id' => $row['brand_id']], 'name'); $series = $this->auto_series_model->get(['id' => $row['s_id']], 'name'); $color = $this->auto_attr_model->get(['id' => $row['cor_id']], 'title'); $version = $this->auto_attr_model->get(['id' => $row['v_id']], 'title'); $color = $color ? $color['title'] : ''; $version = $version ? $version['title'] : ''; $payway = $row['payway']; $deposit = $money_json['price_book']; $if_zero_firstpay = $payway == 0 && !$deposit ? 1 : 0; $car_data = []; if ($row['brand_id'] && $row['s_id'] && $row['v_id']) { $car_data['车辆名称'] = $brand['name'] . $series['name']; $car_data['车辆级别'] = $version; $car_data['车身颜色'] = $color; $car_data['平台售价'] = $money_json['price_car']; $money_json['price_coplus'] && $car_data['公司加价'] = sprintf("%.2f", $money_json['price_coplus']); $money_json['price_color'] && $car_data['颜色加价'] = sprintf("%.2f", $money_json['price_color']); $if_zero_firstpay && $car_data['0首付'] = '是'; !$if_zero_firstpay && $car_data['定金'] = sprintf("%.2f", $money_json['price_book']); $car_price_list = []; $money_json['price_discount'] && $car_price_list['优惠'] = sprintf("%.2f", $money_json['price_discount']); $car_data['最终售价'] = [ 'list' => $car_price_list, 'value' => sprintf("%.2f", $orders_entity->total_price($row['id'])) ]; //服务费 $srv_data = $orders_entity->order_srv_money($row['id'], 1, 0); if ($srv_data['total'] > 0) { $car_data['委托代办']['value'] = sprintf("%.2f", $srv_data['total']); foreach ($srv_data['list'] as $val) { $car_data['委托代办']['list'][$val['title']] = is_numeric($val['money']) ? sprintf("%.2f", $val['money']) : ''; } } $optinos_ids_str = $row['option_ids'] ? implode(',',json_decode($row['option_ids'],true)) : ''; if($optinos_ids_str){ $optinos_rows = $this->auto_option_model->select(["id in ({$optinos_ids_str})"=>null],'','','','id,title,price'); $car_data['选装']['value'] = sprintf("%.2f", $money_json['price_options']); foreach ($optinos_rows as $item) { $car_data['选装']['list'][$item['title']] = is_numeric($item['price']) ? sprintf("%.2f", $item['price']) : ''; } } $fines = json_decode($row['fines'], true); if ($fines) { $fines_list = []; foreach ($fines as $item) { $fines_list['list'][$item['txt']] = $item['price'] > 0 ? sprintf("%.2f", $item['price']) : '赠送'; } $car_data['精品选装'] = $fines_list; $car_data['精品选装']['value'] = sprintf("%.2f", $money_json['price_fine_select']); } $car_data['需开具本地发票'] = $row['if_local_bill'] ? '需要' : '不需要'; } if (!$row['payway'] && $row['brand_id']) { //$finance_row = $this->sys_finance_model->get(['id' => $row['finance_id']], 'title'); $finance_row = $this->sys_supplier_model->get(['id' => $row['finance_id']], 'title'); $car_data['按揭信息'] = $finance_row['title'] ? $finance_row['title'] : ''; } //是否存在意向金订单 $inten_row = $this->app_liche_orders_model->get(['o_id' => $row['id'], 'type' => 4, 'status>=' => 0]); $pay_status = 0; $inten_money = 0; if ($inten_row && $inten_row['status'] == 0) { $pay_status = 1; } if ($inten_row['status'] == 1) {//已支付意向金 $inten_money = floatval($inten_row['total_price']); } # 20230222 地址的值用身份证上面的地址 /*if ($info_json['pro']) { $pro_str = implode(" ", $info_json['pro']); $info_json['c_address'] = str_replace($pro_str, " ", $info_json['c_address']); }*/ $data = [ 'id' => $id, 'name' => $row['name'], 'mobile' => $row['mobile'], 'payway' => $row['brand_id'] ? $row['payway'] : '', 'car_data' => $car_data, 'pay_status' => $pay_status, 'pay_img' => $orders_entity->pay_img($row['id']), 'pack_id' => $row['pack_id'], 'brand_id' => $row['brand_id'], 'car_id' => $row['s_id'], 'v_id' => $row['v_id'], 'color_id' => $row['cor_id'], 'incolor_id' => $row['incor_id'], 'delry_time' => $row['delry_time'] != '0000-00-00 00:00:00' ? date('Y-m-d', strtotime($row['delry_time'])) : '', 'finance_id' => !$row['payway'] ? $row['finance_id'] : '', 'deposit' => $money_json['price_book'] ? sprintf("%.2f", $money_json['price_book']) : 0, 'disc_money' => $money_json['price_discount'] ? sprintf("%.2f", $money_json['price_discount']) : '', 'disc_fine_money' => $money_json['price_fine_discount'] ? sprintf("%.2f", $money_json['price_fine_discount']) : 0, 'srv_arr' => $row['srv_ids'] ? json_decode($row['srv_ids'], true) : [], 'cus_id' => $row['customer_id'], 'status' => $row['status'], 'if_fine' => $row['if_fine'] ? 1 : 0, 'main_type' => intval($row['main_type']), 'fines' => $row['fines'] ? json_decode($row['fines'], true) : [], 'address' => $info_json['c_address'] ? $info_json['c_address'] : '', 'pro' => $info_json['pro'] ? $info_json['pro'] : [], 'c_city_id' => $info_json['car_city_id'], 'if_local_bill' => $row['if_local_bill'], ]; $data['if_zero_firstpay'] = $if_zero_firstpay; if ($row['main_type']) { $info_json['c_credit'] && $data['credit'] = $info_json['c_credit']; $info_json['c_company'] && $data['company'] = $info_json['c_company']; } else { $data['owner_name'] = $row['owner_name']; $data['owner_mobile'] = $row['owner_mobile']; $data['owner_cardid'] = $info_json['c_owner_cardid']; } $data['cardid'] = $info_json['c_cardid']; $inten_money && $data['inten_money'] = $inten_money; //开票文件 $bill = $this->order_bills_model->get(['o_id' => $row['id']], 'file'); $data['bill_img'] = $bill['file'] ? build_qiniu_image_url($bill['file']) : ''; //选择随车物品 $ckcar_status = 0; if ($this->receiver_order_status_model->count(['o_id' => $row['id'], 'pid_status' => 3, 'status' => 1]) && !$this->receiver_order_status_model->count(['o_id' => $row['id'], 'pid_status' => 4, 'status' => 1])) { $ckcar_status = 1; } $delivery = $this->order_deliverys_model->get(['o_id' => $row['id']], 'status,info,tool,remark'); $ckcar_data = [ 'info' => $delivery['info'] ? explode(',', $delivery['info']) : [], 'tool' => $delivery['tool'] ? explode(',', $delivery['tool']) : [], 'remark' => $delivery['remark'] ? $delivery['remark'] : '' ]; $data['ckcar_status'] = $ckcar_status; $data['ckcar_data'] = $ckcar_data; $price_book = $this->app_liche_orders_model->count(['o_id' => $row['id'], 'type' => 1, 'status' => 1]); //定金是否支付 $data['price_book_status'] = $price_book ? true : false; $price_srv = $this->app_liche_orders_model->count(['o_id' => $row['id'], 'type' => 2, 'status' => 1]); //服务费是否支付 $data['price_srv_status'] = $price_srv ? true : false; $price_last = $this->app_liche_orders_model->count(['o_id' => $row['id'], 'type' => 3, 'status' => 1]); //尾款是否支付 $data['price_last_status'] = $price_last ? true : false; $data['edit_status'] = $price_last ? 0 : 1; $data['loan_status'] = true; $loan_row = $this->order_loans_model->get(['o_id' => $row['id']]); $notify_file_list = []; $notify_file = $loan_row['notify_file'] ? explode(',',$loan_row['notify_file']) : ''; if($notify_file){ foreach ($notify_file as $item) { $notify_file_list[] = [ 'src' => build_qiniu_image_url($item), 'value' => $item ]; } } $data['notify_file'] = $notify_file_list; $data['lend_file'] = [ 'src' => $loan_row['lend_file'] ? build_qiniu_image_url($loan_row['lend_file']) : '', 'value' => $loan_row['lend_file'] ? $loan_row['lend_file'] : '' ]; $data['price_loan'] = $money_json['price_loan'] ? $money_json['price_loan'] : 0.00; $data['num'] = $loan_row['num'] ? $loan_row['num'] : 0; $data['is_tiexi'] = intval($loan_row['is_tiexi']); $data['admin_name'] = ''; if ($row['admin_id']) { $admin_row = $this->app_user_model->get(['id' => $row['admin_id']], 'uname'); $data['admin_name'] = $admin_row['uname']; } //获取补充协议 $order_data = $this->receiver_order_datas_model->get(['o_id' => $row['id']], 'sa'); $data['sa'] = $order_data['sa'] ? $order_data['sa'] : ''; $data['refund_status'] = $row['status'] == 2 ? true : false; $data['option_ids'] = $row['option_ids'] ? json_decode($row['option_ids'],true) : []; return $data; } private function lists() { $group_id = $this->session['group_id']; $uid = $this->session['uid']; $keyword = $this->input_param('keyword'); $status = $this->input_param('status'); $brand_id = $this->input_param('brand_id'); $s_id = $this->input_param('car_id'); $v_id = $this->input_param('v_id'); $page = $this->input_param('page'); $size = $this->input_param('size'); $type = $this->input_param('type'); $order_s_time = $this->input_param('order_s_time'); $order_e_time = $this->input_param('order_e_time'); $admin_ids = $this->input_param('admin_ids');//多选销售人员 !$page && $page = 1; !$size && $size = 10; $tab_id = intval($this->input_param('visit_tab_id')); if ($tab_id) {//数据看版数据 if ($tab_id == 2) {//今日 $s_c_time = date('Y-m-01', strtotime(date("Y-m-d"))) . ' 00:00:00'; $e_c_time = date('Y-m-d', strtotime("$s_c_time +1 month -1 day")) . ' 23:59:59'; } else {//本月 $s_c_time = date('Y-m-d') . ' 00:00:00'; $e_c_time = date('Y-m-d') . ' 23:59:59'; } if ($status == 6) { $status = ''; $where = ['order_time>=' => $s_c_time, 'order_time<=' => $e_c_time]; } else if ($status == 8) { $status = 2; $where = ['refund_time>=' => $s_c_time, 'refund_time<=' => $e_c_time]; } } else { $where = ['status!='=>2]; } $admin_ids && $where["admin_id in ({$admin_ids})"] = null; $brand_id && $where['brand_id'] = $brand_id; $s_id && $where['s_id'] = $s_id; $v_id && $where['v_id'] = $v_id; if ($group_id == 1) { $where['admin_id'] = $uid;//销售 } else if ($group_id == 2 || $group_id == 3) {//店长/老板 $where["(biz_id = {$this->biz_id} OR admin_id = {$uid})"] = null; } else if ($group_id == 4) { $where['biz_id'] = $this->biz_id; $this->biz_id != 1 && $where['brand_id!='] = 3; //渠道经理过滤 } if ($keyword) { $where["(name='{$keyword}' or owner_name='{$keyword}')"] = null; } if ($status == 11) { //进行中 $where['status'] = 0; } elseif ($status == 12) { //已完成 $where['status'] = 1; } else { if (strlen($status)) { $where['status'] = $status; } else { $where['status>='] = 0; } } if ($type) { unset($where['status']); $where['status>='] = 0; $where['id>='] = Orders_v2_entity::V2_START_ID; $where['brand_id>'] = 0; if ($type == 'fq') { $where['payway'] = 0; $where['id not in (select o_id from lc_receiver_order_status where pid_status=1 and status=2)'] = null; } elseif ($type == 'pc') { $where['id not in (select o_id from lc_receiver_order_status where pid_status=2 and status=1)'] = null; } elseif ($type == 'kp') { $where['id not in (select o_id from lc_receiver_order_status where pid_status=3 and status=1)'] = null; $where['id in (select o_id from lc_receiver_order_status where pid_status=0 and status=2)'] = null; } elseif ($type == 'jf') { $where['id in (select o_id from lc_receiver_order_status where pid_status=3 and status=1)'] = null; $where['id not in (select o_id from lc_receiver_order_status where pid_status=4 and status=2)'] = null; } } //下定时间 if ($order_s_time && $order_e_time) { $where["order_time >="] = date('Y-m-d 00:00:00', strtotime($order_s_time)); $where["order_time <="] = date('Y-m-d 00:00:00', strtotime($order_e_time)); } $fileds = 'id,customer_id,name,mobile,brand_id,s_id,v_id,cor_id,incor_id,payway,admin_id, status,c_time,money_json,if_num,info_json,main_type,owner_name,owner_mobile,item_id,order_time,over_time'; $count = $this->orders_model->count($where); $lists = $map_users = []; if ($count) { $rows = $this->orders_model->select($where, 'id desc', $page, $size, $fileds); //销售顾问 $str_user_ids = implode(',', array_unique(array_column($rows, 'admin_id'))); $str_user_ids && $map_users = $this->app_user_model->map('id', 'uname', ["id in({$str_user_ids})" => null]); //品牌车型 $brand_arr = array_unique(array_column($rows, 'brand_id')); $brands = $this->auto_brand_model->get_map_by_ids($brand_arr, 'id,name'); //车系车型 $series_arr = array_unique(array_column($rows, 's_id')); $series = $this->auto_series_model->get_map_by_ids($series_arr, 'id,name'); //获取车辆属性 $version_arr = array_unique(array_column($rows, 'v_id')); $color_arr = array_unique(array_column($rows, 'cor_id')); $attrs_arr = array_merge($version_arr, $color_arr); $attrs = $this->auto_attr_model->get_map_by_ids($attrs_arr, 'id,title'); //旧订单数据 $old_rows = []; $old_ids = array_unique(array_column($rows, 'id')); if ($old_ids) { $ids_str = implode(',', $old_ids); $where = [ "id in ({$ids_str})" => null, ]; $old_rows = $this->receiver_orders_model->map('id', 'status', $where, '', '', '', 'id,status'); } $item_map = []; $item_arr_ids = array_unique(array_column($rows, 'item_id')); if ($item_arr_ids) { $str_ids = implode(',', $item_arr_ids); $where = [ "id in ({$str_ids})" => null ]; $item_map = $this->items_model->map('id', 'vin', $where, '', '', '', 'id,vin'); } //获取订单资料 $order_datas = $this->receiver_order_datas_model->get_map_by_oids(array_column($rows, 'id'), 'id,o_id,cardida,business_licence,car_img,register_img,ins_img,other_img,insurance_img,business_img'); $status_arr = $this->orders_model->get_status(); $old_status_arr = $this->receiver_orders_model->get_status(); $allot = $this->get_allot(); foreach ($rows as $key => $val) { $info_json = json_decode($val['info_json'], true); if ($val['id'] >= Orders_v2_entity::V2_START_ID) { $money_json = json_decode($val['money_json'], true); if ($val['brand_id']) { //已选择车型 $brand_name = isset($brands[$val['brand_id']]) ? $brands[$val['brand_id']][0]['name'] : ''; $serie_name = isset($series[$val['s_id']]) ? $series[$val['s_id']][0]['name'] : ''; $color = isset($attrs[$val['cor_id']]) ? $attrs[$val['cor_id']][0]['title'] : ''; $version = isset($attrs[$val['v_id']]) ? $attrs[$val['v_id']][0]['title'] : ''; $title = "{$brand_name}{$serie_name}-{$color}-{$version}"; $img_status = $this->order_datas_entity->data_status($order_datas[$val['id']][0]); $ck_user_status = $this->receiver_order_status_model->count(['o_id' => $val['id'], 'pid_status' => 4, 'status' => 2]); //用户已确认 $ck_admin_status = $this->receiver_order_status_model->count(['o_id' => $val['id'], 'pid_status' => 4, 'status' => 1]); //顾问确认已确认 $ck_status = [ ['value' => '顾问确认', 'selected' => $ck_admin_status ? true : false], ['value' => '用户确认', 'selected' => $ck_user_status ? true : false] ]; $other_data = [ '品牌车型' => ['type' => 'text', 'value' => $title, 'bg_color' => ''], '付款方式' => ['type' => 'text', 'value' => $val['payway'] ? '全款' : '分期', 'bg_color' => ''], ]; $book_is_pay = $this->app_liche_orders_model->get(['o_id' => $val['id'], 'type' => 1, 'status>=' => 0]); //定金 $srv_is_pay = $this->app_liche_orders_model->get(['o_id' => $val['id'], 'type' => 2, 'status>=' => 0]); //服务费 $int_is_pay = $this->app_liche_orders_model->get(['o_id' => $val['id'], 'type' => 4, 'status>=' => 0]); //意向金 $p_row = $this->app_liche_orders_model->get(['o_id' => $val['id'], 'pid' => 0], 'id'); //父订单 $last_row = $this->app_liche_orders_model->get(['o_id' => $val['id'], 'pid' => $p_row['id'], 'type' => 3], 'id'); //尾款订单 $last_row = $this->app_liche_orders_model->get(['o_id' => $val['id'], 'pid' => $p_row['id'], 'type' => 6], 'id'); //后台添加车款订单 //除去尾款已支付金额 $total_pay = $this->app_liche_orders_model->sum('total_price', ['pid' => $p_row['id'], 'o_id' => $val['id'], 'status' => 1, 'id!=' => $last_row['id']]); //后台添加已支付金额 $ht_pay = $this->app_liche_orders_model->sum('total_price', ['pid' => $p_row['id'], 'o_id' => $val['id'], 'status' => 1, 'type' => 6]); //已支付尾款 $last_pay = $this->app_liche_orders_model->sum('total_price', ['pid' => $last_row['id'], 'status' => 1]); $is_pay_price = $total_pay['total_price'] + $last_pay['total_price'] + $ht_pay['total_price']; $need_pay = $this->orders_v2_entity->recevable_price($val['id'], false); //需要支付车款 $need_last_pay = $book_is_pay ? $need_pay - $money_json['price_book'] : $need_pay; if ($int_is_pay['status']) { $price_book_text = number_format($int_is_pay['total_price'], 2) . "(已支付)"; $other_data['意向金金额'] = ['type' => 'text', 'value' => $price_book_text, 'bg_color' => '']; } if ($book_is_pay) { $payway = $val['payway']; $deposit = $money_json['price_book']; $if_zero_firstpay = $payway == 0 && !$deposit ? 1 : 0; $if_zero_firstpay && $other_data['0首付'] = ['type' => 'text', 'value' => '是', 'bg_color' => '']; $book_is_pay_text = $book_is_pay['status'] ? '已支付' : '未支付'; $price_book_text = number_format($money_json['price_book'], 2) . "($book_is_pay_text)"; !$if_zero_firstpay && $other_data['定金金额'] = ['type' => 'text', 'value' => $price_book_text, 'bg_color' => '']; } if ($ht_pay['total_price']) { $ht_price = number_format($ht_pay['total_price'], 2); $other_data['车款金额'] = ['type' => 'text', 'value' => "{$ht_price}(已支付)", 'bg_color' => '']; $need_last_pay -= $ht_pay['total_price']; } if ($need_last_pay) { $last_is_pay_text = $is_pay_price >= $need_pay ? '已支付' : '未支付'; $last_text = number_format($need_last_pay, 2) . "($last_is_pay_text)"; $other_data['尾款金额'] = ['type' => 'text', 'value' => $last_text, 'bg_color' => '']; } if ($srv_is_pay) { $last_is_pay_text = $srv_is_pay['status'] ? '已支付' : '未支付'; $srv_text = number_format($srv_is_pay['total_price'], 2) . "($last_is_pay_text)"; $other_data['服务费'] = ['type' => 'text', 'value' => $srv_text, 'bg_color' => '']; } if ($int_is_pay['status'] || $book_is_pay['status'] || $this->app_liche_orders_model->count(['o_id' => $val['id'], 'type' => 6, 'status' => 1])) { if (!$val['payway']) { $other_data['分期办理'] = ['type' => 'text', 'value' => $this->orders_status_entity->status_cn($val['id'], 1), 'bg_color' => '']; } $pc_cn = '待分配'; if ($this->orders_status_entity->get_finish($val['id'], 2, 1)) { //已配车 $pc_cn = $item_map[$val['item_id']]; } $other_data['车辆分配'] = ['type' => 'text', 'value' => $pc_cn, 'bg_color' => '']; $other_data['发票'] = ['type' => 'text', 'value' => $this->orders_status_entity->status_cn($val['id'], 3), 'bg_color' => '']; if ($val['main_type']) {//公司 $other_data['营业执照'] = ['type' => 'text', 'value' => $img_status['business_licence']['text'], 'bg_color' => $img_status['business_licence']['color']]; } else { $other_data['身份证'] = ['type' => 'text', 'value' => $img_status['cardida']['text'], 'bg_color' => $img_status['cardida']['color']]; } $other_data['登记证'] = ['type' => 'text', 'value' => $img_status['register_img']['text'], 'bg_color' => $img_status['register_img']['color']]; $other_data['行驶证'] = ['type' => 'text', 'value' => $img_status['car_img']['text'], 'bg_color' => $img_status['car_img']['color']]; $other_data['保单'] = ['type' => 'text', 'value' => $img_status['ins_img']['text'], 'bg_color' => $img_status['ins_img']['color']]; $other_data['交车合照'] = ['type' => 'text', 'value' => $img_status['other_img']['text'], 'bg_color' => $img_status['other_img']['color']]; $other_data['交付'] = ['type' => 'checkbox', 'value' => '', 'lists' => $ck_status, 'bg_color' => '']; } $val['order_time'] != '0000-00-00 00:00:00' && $other_data['下定时间'] = ['type' => 'text', 'value' => date('Y-m-d', strtotime($val['order_time'])), 'bg_color' => '']; $val['over_time'] != '0000-00-00 00:00:00' && $other_data['截止交付'] = ['type' => 'text', 'value' => date('Y-m-d', strtotime($val['over_time'])), 'bg_color' => '']; } else { $price_intention = $money_json['price_intention'] ? $money_json['price_intention'] : ''; $other_data = [ '意向金' => ['type' => 'text', 'value' => $price_intention, 'bg_color' => ''], '订单日期' => ['type' => 'text', 'value' => date('Y-m-d', $val['c_time']), 'bg_color' => ''], ]; } if ($map_users[$val['admin_id']]) { $other_data['销售顾问'] = ['type' => 'text', 'value' => $map_users[$val['admin_id']], 'bg_color' => '']; } $lists[] = [ 'id' => $val['id'], 'cus_id' => $val['customer_id'], 'name' => $val['name'], 'mobile' => $val['mobile'], 'owner_name' => $val['main_type'] ? '' : $val['owner_name'], 'owner_mobile' => $val['main_type'] ? '' : $val['owner_mobile'], 'company' => $val['main_type'] ? $info_json['c_company'] : '', 'status_name' => $status_arr[$val['status']], 'other_data' => $other_data, 'allot' => $allot, ]; } else {//旧订单 $status = $old_rows[$val['id']] ? $old_rows[$val['id']] : 0; $money_json = json_decode($val['money_json'], true); if ($val['brand_id']) { //已选择车型 $brand_name = isset($brands[$val['brand_id']]) ? $brands[$val['brand_id']][0]['name'] : ''; $serie_name = isset($series[$val['s_id']]) ? $series[$val['s_id']][0]['name'] : ''; $color = isset($attrs[$val['cor_id']]) ? $attrs[$val['cor_id']][0]['title'] : ''; $version = isset($attrs[$val['v_id']]) ? $attrs[$val['v_id']][0]['title'] : ''; //是否需要代办 $srv_arr = explode(',', $val['srv_ids']); $db_title = in_array(2, $srv_arr) ? '需要' : ''; $other_data = [ '品牌车型' => "{$brand_name}{$serie_name}-{$color}-{$version}", '付款方式' => $val['payway'] ? '全款' : '分期', '代办车牌' => $db_title, '定金金额' => $money_json['price_book'], '订单日期' => date('Y-m-d', $val['c_time']), ]; } else { $other_data = [ '意向金' => $money_json['price_intention'] ? $money_json['price_intention'] : '', '订单日期' => date('Y-m-d', $val['c_time']), ]; } if ($map_users[$val['admin_id']]) { $other_data['销售顾问'] = $map_users[$val['admin_id']]; } $lists[] = [ 'id' => $val['id'], 'cus_id' => $val['customer_id'], 'name' => $val['name'], 'mobile' => $val['mobile'], 'owner_name' => '', 'owner_mobile' => '', 'company' => '', 'status_name' => $old_status_arr[$status], 'other_data' => $other_data, 'remark' => $this->orders_entity->get_remark($status), 'allot' => $allot, ]; } } } $data = [ 'list' => $lists, 'total' => $count ]; return $data; } //获取客户订单 protected function get_customer() { $customer_id = intval($this->input_param('customer_id')); if (!$customer_id) { throw new Exception('参数错误', ERR_PARAMS_ERROR); } $where = ['status>=' => 0, 'customer_id' => $customer_id]; $total = $this->orders_model->count($where); $lists = []; if ($total) { $rows = $this->orders_model->select($where, 'id desc', 0, 0, 'id,name,mobile,owner_name,owner_mobile,brand_id,s_id,v_id'); //品牌车型 $brand_arr = array_unique(array_column($rows, 'brand_id')); $brands = $this->auto_brand_model->get_map_by_ids($brand_arr, 'id,name'); //车系车型 $series_arr = array_unique(array_column($rows, 's_id')); $series = $this->auto_series_model->get_map_by_ids($series_arr, 'id,name'); //获取车辆属性 $version_arr = array_unique(array_column($rows, 'v_id')); $attrs = $this->auto_attr_model->get_map_by_ids($version_arr, 'id,title'); foreach ($rows as $key => $val) { $car_name = $name = $mobile = ''; if ($val['brand_id']) { //已选择车型 $brand_name = isset($brands[$val['brand_id']]) ? $brands[$val['brand_id']][0]['name'] : ''; $serie_name = isset($series[$val['s_id']]) ? $series[$val['s_id']][0]['name'] : ''; $version = isset($attrs[$val['v_id']]) ? $attrs[$val['v_id']][0]['title'] : ''; $car_name = "{$brand_name}{$serie_name}-{$version}"; } $lists[] = [ 'id' => $val['id'], 'car_name' => $car_name, 'name' => $val['owner_name'] ? $val['owner_name'] : $val['name'], 'mobile' => $val['owner_mobile'] ? $val['owner_mobile'] : $val['mobile'] ]; } } $data = [ 'list' => $lists, 'total' => $total ]; return $data; } //订单列表头部 protected function get_tabs() { $group_id = $this->session['group_id']; $uid = $this->session['uid']; $where['status'] = 0; if ($group_id == 1) { $where['admin_id'] = $uid;//销售 } else if ($group_id == 2 || $group_id == 3) {//店长/老板 $where["(biz_id = {$this->biz_id} OR admin_id = {$uid})"] = null; } else if ($group_id == 4) { $where['biz_id'] = $this->biz_id; $this->biz_id != 1 && $where['brand_id!='] = 3; //渠道经理过滤 } $d_count = $this->orders_model->count($where); $where['status'] = 1; $f_count = $this->orders_model->count($where); $lists = [ ['key' => 11, 'name' => "进行中({$d_count})"], ['key' => 12, 'name' => "已完成({$f_count})"], ]; $data['filters'] = [ 'type' => [ ['key' => 'fq', 'name' => '分期办理'], ['key' => 'pc', 'name' => '车辆匹配'], ['key' => 'kp', 'name' => '发票开具'], ['key' => 'jf', 'name' => '交付确认'], ], ]; $data['tabs'] = $lists; return $data; } //修改用户基本信息 protected function put_info() { $id = $this->input_param('id'); $owner_name = trim($this->input_param('owner_name')); $owner_mobile = trim($this->input_param('owner_mobile')); $owner_cardid = trim($this->input_param('owner_cardid')); $company = $this->input_param('company'); $c_credit = $this->input_param('credit'); $address = $this->input_param('address'); $car_city_id = $this->input_param('c_city_id'); $pro = $this->input_param('pro'); $row = $this->orders_model->get(['id' => $id]); if (!$row) { throw new Exception('参数错误', ERR_PARAMS_ERROR); } if ($row['main_type'] == 1) { //公司 $owner_name = $company; } $data = []; $owner_name && $data['owner_name'] = $owner_name; $owner_mobile && $data['owner_mobile'] = $owner_mobile; $info_json = json_decode($row['info_json'], true); $owner_cardid && $info_json['c_owner_cardid'] = $owner_cardid; $c_credit && $info_json['c_credit'] = $c_credit; $company && $info_json['c_company'] = $company; # 20230222 地址的值用身份证上面的地址 /*if ($pro) { $info_json['pro'] = $pro; $address = implode(' ', $pro) . $address; }*/ $address && $info_json['c_address'] = $address; $car_city_id && $info_json['car_city_id'] = $car_city_id; $info_json && $data['info_json'] = json_encode($info_json, JSON_UNESCAPED_UNICODE); $result = $this->orders_model->update($data, ['id' => $row['id']]); if ($result) { if ($this->receiver_order_contracts_model->count(['o_id' => $row['id'], 'type in (0,1)' => null])) { $this->receiver_order_contracts_model->delete(['o_id' => $row['id'], 'type in (0,1)' => null]); } $is_pay = $this->app_liche_orders_model->count(['o_id' => $row['id'], 'type!=' => 4, 'status' => 1]); if ($is_pay) { //存在已支付订单并且修改信息 写日志 $content = []; if ($owner_name != $row['owner_name']) { $content[] = "车主姓名由 {$row['owner_name']} 变更为 {$owner_name}"; $owner_a = $row['owner_name']; $owner_b = $owner_name; } if ($owner_mobile != $row['owner_mobile']) { $content[] = "车主手机号由 {$row['owner_mobile']} 变更为 {$owner_mobile}"; $owner_a = $row['owner_mobile']; $owner_b = $owner_mobile; } if ($owner_cardid != $info_json['c_owner_cardid']) { $content[] = "车主身份证由 {$info_json['c_owner_cardid']} 变更为 {$owner_cardid}"; $owner_a = $info_json['c_owner_cardid']; $owner_b = $owner_cardid; } if ($content) { $log_content = implode("
", $content); $this->orders_entity->add_log($row['id'], $this->session['uid'], $this->session['uname'], $log_content); $params = [ 'sid' => $row['sid'] . "({$owner_name})", 'owner_a' => $owner_a, 'owner_b' => $owner_b, ]; $this->orders_v2_entity->send_msg('SMS_241360549', $params); } } throw new Exception('修改成功', API_CODE_SUCCESS); } else { throw new Exception('修改失败', ERR_PARAMS_ERROR); } } protected function put_status() { $id = $this->input_param('id'); $row = $this->orders_model->get(['id' => $id]); if (!$row) { throw new Exception('订单不存在', ERR_PARAMS_ERROR); } $is_pay = $this->app_liche_orders_model->count(['o_id' => $row['id'], 'status' => 1]); if ($is_pay) { throw new Exception('修改失败', ERR_PARAMS_ERROR); } $result = $this->orders_model->update(['status' => -1], ['id' => $row['id']]); if ($result) { $this->app_liche_orders_model->update(['status' => -1], ['o_id' => $row['id']]); //更新客户下单时间 $this->customers_model->update(array('order_time' => '0000-00-00 00:00:00'), ['id' => $row['customer_id']]); throw new Exception('修改成功', API_CODE_SUCCESS); } else { throw new Exception('修改失败', ERR_PARAMS_ERROR); } } //判断金额 protected function ck_money($money_json, $srv_arr, $biz) { return true; # 2023.03.06,关闭委托代办检查 if($biz['id']==160){ return true; // $ff_price = $money_json['fee_carno'] + $money_json['price_finance']; // if($ff_price>0){ // return true; // }else{ // throw new Exception('上牌和金融不得低于0', ERR_PARAMS_ERROR); // } } if ($biz['id'] == 70) { $fee_carno_limit = 700; $price_finance_limit = 1000; } elseif ($biz['id'] == 63) { $fee_carno_limit = 600; $price_finance_limit = 0; } else { $fee_carno_limit = 1000; $price_finance_limit = 1000; } $total_limit = $fee_carno_limit + $price_finance_limit; if ($biz['type'] == 1) { //直营店 $srv_ids = array_column($srv_arr, 'id'); if (!in_array(1, $srv_ids)) { throw new Exception('保险必填', ERR_PARAMS_ERROR); } if (!in_array(2, $srv_ids)) { throw new Exception('上牌必填', ERR_PARAMS_ERROR); } if ($money_json['fee_carno'] && $money_json['price_finance']) {//上牌和金融都有填写 $ff_price = $money_json['fee_carno'] + $money_json['price_finance']; if ($ff_price < $total_limit) { throw new Exception('上牌和金融不得低于' . $total_limit, ERR_PARAMS_ERROR); } } elseif ($money_json['fee_carno'] || $money_json['price_finance']) { //上牌和金融只填写一项 if ($money_json['fee_carno'] < $fee_carno_limit && !$money_json['price_finance']) { throw new Exception('上牌不得低于' . $fee_carno_limit, ERR_PARAMS_ERROR); } if (!$money_json['fee_carno'] && $money_json['price_finance'] < $price_finance_limit) { throw new Exception('金融不得低于' . $price_finance_limit, ERR_PARAMS_ERROR); } } else { //挂牌和金融都没填写 throw new Exception('上牌和金融不得低于1000', ERR_PARAMS_ERROR); } } } /** * Notes:分配订单 * Created on: 2022/7/27 14:35 * Created by: dengbw * @throws Hd_exception */ protected function put_admins() { $id_arr = $this->input_param('ids'); $admin_id = $this->input_param('admin_id'); if (!$id_arr || !$admin_id) { throw new Hd_exception('参数错误', API_CODE_INVILD_PARAM); } $allot = $this->get_allot(); if ($allot == 0) { throw new Hd_exception('无权限分配', API_CODE_INVILD_PARAM); } foreach ($id_arr as $v) { $re = $this->orders_model->get(['id' => $v]); if ($re['admin_id'] == $admin_id) {//同个销售跳出循环 continue; } $content = $re['admin_id'] ? '重新分配订单' : '分配订单'; $this->orders_model->update(['admin_id' => $admin_id], ['id' => $v]); $this->orders_entity->add_log($v, $this->session['uid'], $this->session['uname'], $content); } throw new Exception('操作成功', API_CODE_SUCCESS); } /** * Notes:判断分配客户权限 * Created on: 2022/7/27 10:02 * Created by: dengbw * @return int */ private function get_allot() { $allot = 1; $group_id = $this->session['group_id']; if ($group_id == 1) {//销售不可分配用户 $allot = 0; } return $allot; } }