Files
liche/api/controllers/wxapp/licheb/CusorderV2.php
T

1237 lines
63 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
defined('WXAPP_APP') OR exit('No direct script access allowed');
/**
* Created by Vim
* User: lcc
* Date: 2021/07/09
* Time: 14:08
*/
require_once APPPATH . 'controllers/wxapp/Wxapp.php';
class CusorderV2 extends Wxapp
{
private $biz_id = '';
function __construct($inputs, $app_key)
{
parent::__construct($inputs, $app_key);
$this->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("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');//是否需要开具本地发票
$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 || !$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 ($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,
];
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'];
}
}
}
$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']);
}
//更新客户下单时间
$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');//是否需要开具本地发票
$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 ($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']);
}
}
}
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);
//补充协商
$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'] : '';
$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']);
$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']) : '';
}
}
$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'],
];
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;
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) {
$book_is_pay_text = $book_is_pay['status'] ? '已支付' : '未支付';
$price_book_text = number_format($money_json['price_book'], 2) . "($book_is_pay_text)";
$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("<br>", $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;
}
}