getSale($sale); //2.从数据库获取销售方式 $db_sale_array = $this->getDbSale($channel_id); //3.获取联系人详情数组 $link_array = $this->getLink($link_info); //4.从数据库获取联系人详情 $db_link_array = $this->getDbLink($channel_id); //5.比较销售方式 $sale = $this->compare($sale_array, $db_sale_array); //6,比较联系详情 $link = $this->compare($link_array, $db_link_array); //7,从数据库获取渠道商详情 $db_channel = $this->getDbChannel($channel_id); //8.操作数据库 $channel_array = array('supplier_name' => $supplier_name,'area_id' => $area_id,'manage_type' => $manage_type,'company_name' => $company_name,'id_card' => $id_card,'sett_type' => $sett_type,'sett_frequency' => $sett_frequency,'account_bank' => $account_bank,'account_num' => $account_num,'account_name' => $account_name,'sales_man' => $sales_man); $res = $this -> updatePdoChannel($channel_id,$channel_array,$db_channel,$sale,$link); echo json_encode($res); exit(); } //获取销售方式详情数组 function getSale($sale) { if ($sale == '') { $sale_array = array(); return $sale_array; } $sale = explode(",", $sale); $key = $_COOKIE['memcache']; $sale_memcache = get_memcache('ZHANGS_SALE' . $key); foreach ($sale as $item => $value) { $sale_array[$value] = $sale_memcache[$value]; } return $sale_array; } //获取联系人详情数组 function getLink($link_info) { if ($link_info == '') { $link_array = array(); return $link_array; } $link_info = explode(",", $link_info); $key = $_COOKIE['memcache']; $link_memcache = get_memcache('ZHANGS_LINK' . $key); foreach ($link_info as $item => $value) { $status = 0; if (empty($link_memcache[$value]['link_name']) || empty($link_memcache[$value]['contact_name'])) { $status = 1; } if ($status == 0) { $link_array[$value] = $link_memcache[$value]; } } return $link_array; } //从数据库获取销售方式详情数组 function getDbSale($channel_id) { global $pdo; $sql = "SELECT id AS sale_id, prod_supplier_id, product_type, parent_type, sale_type, commision_flag, commision_type, back_commision_type, back_commision_method, back_percent, back_value FROM base_supplier_sale WHERE cancel_flag = 0 AND supplier_id = " . $channel_id; writeLog("getDbSale base_supplier_sale:" . $sql); $result = $pdo->query($sql); $res = $result->fetchAll(PDO::FETCH_ASSOC); if(count($res) > 0) { foreach($res as $k => $v) { $result1[$v['sale_id']] = $v; } } else { $result1= array(); } return $result1; } //从数据库获取联系人详情 function getDbLink($channel_id) { global $pdo; $sql = "SELECT id as link_id, link_name, contact_name, contact_mobile, contact_telphone, fax, email, remark FROM base_supplier_link WHERE cancel_flag = 0 AND supplier_id = " . $channel_id; writeLog("getDbLink base_supplier_link:" . $sql); $result = $pdo->query($sql); $res = $result->fetchAll(PDO::FETCH_ASSOC); if(count($res) > 0) { foreach($res as $k => $v) { $result1[$v['link_id']] = $v; } } else { $result1= array(); } return $result1; } //从数据库获取渠道商详情 function getDbChannel($channel_id) { global $pdo; $sql = "SELECT supplier_name, area_id, manage_type, company_name, id_card, sett_type, sett_frequency, account_bank, account_num, account_name, sales_man FROM base_supplier WHERE cancel_flag = 0 AND id = " . $channel_id; writeLog("getDbChannel base_supplier:" . $sql); $result = $pdo->query($sql); $res = $result->fetchAll(PDO::FETCH_ASSOC); $res = $res[0]; return $res; } //比较数组(前台数组,数据库数组) function compare($arr, $db_arr) { $result = array(); if(count($db_arr) == 0 && count($arr) == 0) { return $result; } elseif (count($db_arr) == 0) { $result['insert'] = $arr; return $result; } elseif (count($arr) == 0) { $result['delete'] = $db_arr; return $result; } else { foreach ($arr as $key => $value) { if(isset($db_arr[$key])) { if($arr != $db_arr) { $result['update'][$key] = $value; } } else { $result['insert'][$key] = $value; } } foreach($db_arr as $key => $value) { if(!isset($arr[$key])) { $result['delete'][$key] = $value; } } return $result; } } //获取update操作中的set数据 function getUpdateSet($arr) { $set_array = array(); foreach($arr as $k => $v) { if(!empty($v)) { $set_array[] = $k . " = '" . $v . "'"; } else { if($k == 'account_bank' || $k == 'account_num' || $k == 'account_name' || $k == 'link_name' || $k == 'contact_name' || $k == 'contact_mobile' || $k == 'contact_telphone' || $k == 'fax' || $k == 'email' || $k == 'remark' || $k == 'id_card' || $k == 'sales_man') { $set_array[] = $k . " = ''"; } else { $set_array[] = $k . " = '0'"; } } } $set_str = implode(",",$set_array); return $set_str; } //操作数据库 function updatePdoChannel($channel_id,$channel_array,$db_channel,$sale,$link) { global $pdo; $user_id = getUserId();//1; $time = date('Y-m-d H:i:s',time()); try { $pdo->beginTransaction(); //1.操作base_supplier表 if($channel_array != $db_channel)//修改 { $set_str = $this->getUpdateSet($channel_array); $update_supplier_sql = "UPDATE base_supplier SET update_user_id = " . $user_id . ",update_time = '" . $time . "'," . $set_str . " WHERE id = " . $channel_id; writeLog("UPDATE base_supplier:" . $update_supplier_sql); $result = $pdo->exec($update_supplier_sql); if (!$result) { throw new Exception("db die"); } } //2.操作base_supplier_sale表 if(count($sale) > 0) { if(count($sale['update']) > 0)//修改 { $update_sale_array = array(); foreach($sale['update'] as $key => $value) { unset($value['sale_id']); $set_str = $this->getUpdateSet($value); $update_sale_array[] = "UPDATE base_supplier_sale SET update_user_id = " . $user_id . ",update_time = '" . $time . "'," . $set_str . " WHERE id = " . $key; } $update_sale_sql = implode(";",$update_sale_array); writeLog("UPDATE base_supplier_sale:" . $update_sale_sql); $result = $pdo->exec($update_sale_sql); if (!$result) { throw new Exception("db die"); } } if(count($sale['insert']) > 0)//增加 { $insert_sale_sql = "INSERT INTO base_supplier_sale ( create_user_id, create_time, supplier_id, prod_supplier_id, product_type, parent_type, sale_type, commision_flag, commision_type, back_commision_type, back_commision_method, back_percent, back_value ) VALUES "; foreach($sale['insert'] as $key => $value) { $sale_sql_array[] = "(" . $user_id . ",'" . $time . "'," . $channel_id . "," . $value['prod_supplier_id'] . "," . $value['product_type'] . "," . $value['parent_type'] . "," . $value['sale_type'] . "," . $value['commision_flag'] . "," . $value['commision_type'] . "," . $value['back_commision_type'] . "," . $value['back_commision_method'] . ",'" . $value['back_percent'] . "','" . $value['back_value'] . "')"; } $insert_sale_sql .= implode(",", $sale_sql_array); writeLog("INSERT base_supplier_purchase:" . $insert_sale_sql); $result = $pdo->exec($insert_sale_sql); if (!$result) { throw new Exception("db die"); } } if(count($sale['delete']) > 0)//删除 { $delete_sale_array = array(); foreach($sale['delete'] as $key => $value) { $delete_sale_array[] = "UPDATE base_supplier_sale SET update_user_id = " . $user_id . ",update_time = '" . $time . "',cancel_flag = 1 WHERE id = " . $key; } $delete_sale_sql = implode(";",$delete_sale_array); writeLog("delete base_supplier_sale:" . $delete_sale_sql); $result = $pdo->exec($delete_sale_sql); if (!$result) { throw new Exception("db die"); } } } //3.操作base_supplier_link表 if(count($link) > 0) { if(count($link['update']) > 0)//修改 { $update_link_array = array(); foreach($link['update'] as $key => $value) { unset($value['link_id']); $set_str = $this->getUpdateSet($value); $update_link_array[] = "UPDATE base_supplier_link SET update_user_id = " . $user_id . ",update_time = '" . $time . "'," . $set_str . " WHERE id = " . $key; } $update_link_sql = implode(";",$update_link_array); writeLog("UPDATE base_supplier_link:" . $update_link_sql); $result = $pdo->exec($update_link_sql); if (!$result) { throw new Exception("db die"); } } if(count($link['insert']) > 0)//增加 { $insert_link_sql = "INSERT INTO base_supplier_link ( create_user_id, create_time, supplier_id, link_name, contact_name, contact_mobile, contact_telphone, fax, email, remark ) VALUES"; foreach($link['insert'] as $key => $value) { $link_sql_array[] = "(" . $user_id . ",'" . $time . "'," . $channel_id . ",'" . $value['link_name'] . "','" . $value['contact_name'] . "','" . $value['contact_mobile'] . "','" . $value['contact_telphone'] . "','" . $value['fax'] . "','" . $value['email'] . "','" . $value['remark'] . "')"; } $insert_link_sql .= implode(",", $link_sql_array); writeLog("INSERT base_supplier_purchase:" . $insert_link_sql); $result = $pdo->exec($insert_link_sql); if (!$result) { throw new Exception("db die"); } } if(count($link['delete']) > 0)//删除 { $delete_link_array = array(); foreach($link['delete'] as $key => $value) { $delete_link_array[] = "UPDATE base_supplier_link SET update_user_id = " . $user_id . ",update_time = '" . $time . "',cancel_flag = 1 WHERE id = " . $key; } $delete_link_sql = implode(";",$delete_link_array); writeLog("delete base_supplier_sale:" . $delete_link_sql); $result = $pdo->exec($delete_link_sql); if (!$result) { throw new Exception("db die"); } } } $pdo->commit(); //4.删除缓存 $key = $_COOKIE['memcache']; delete_memcache('ZHANGS_LINK' . $key); delete_memcache('ZHANGS_SALE' . $key); $json['code'] = '0'; $json['info'] = '修改数据成功'; } catch (PDOException $ex) { $pdo->rollBack(); $json['code'] = '1'; $json['info'] = '修改失败'; } return $json; } } $channel_id = trim($_POST['channel_id']);//渠道商名称 $supplier_name = trim($_POST['supplier_name']);//渠道商名称 $area_id = trim($_POST['area_id']);//所属区域市id $manage_type = trim($_POST['manage_type']);//经营性质 1:公司 2:个人 $company_name = trim($_POST['company_name']);//公司名称 $id_card = trim($_POST['id_card']);//身份证号(企业传空) $sale = trim($_POST['sale']);//销售方式 $sett_type = trim($_POST['sett_type']);//结算方式 (授信:275,预付:288,单结:292) $sett_frequency = trim($_POST['sett_frequency']);//结算周期(日结:293,周结:294,月结:295) $account_bank = trim($_POST['account_bank']);//开户银行 $account_num = trim($_POST['account_num']);//银行账号 $account_name = trim($_POST['account_name']);//账号名称 $link_info = trim($_POST['link_info']);//联系人详情 $sales_man = trim($_POST['sales_man']);//业务员 $update_channel = new update_channel(); $update_channel -> execUpdateChannel($channel_id,$supplier_name, $area_id, $manage_type, $company_name, $id_card, $sale, $sett_type, $sett_frequency, $account_bank, $account_num, $account_name, $link_info,$sales_man) ?>