getPurchase($purchase); //2.从数据库获取采购详情 $db_purchase_array = $this->getDbPurchase($supply_id); //3.获取联系人详情数组 $link_array = $this->getLink($link_info); //4.从数据库获取联系人详情 $db_link_array = $this->getDbLink($supply_id); //5.比较采购详情 $purchase = $this->compare($purchase_array, $db_purchase_array); //6,比较联系详情 $link = $this->compare($link_array, $db_link_array); //7,从数据库获取供应商详情 $db_supply = $this->getDbSupply($supply_id); //8.操作数据库 $supply_array = array('supplier_name' => $supplier_name,'area_id' => $area_id,'company_name' => $company_name,'sett_type' => $sett_type,'sett_frequency' => $sett_frequency,'account_bank' => $account_bank,'account_num' => $account_num,'account_name' => $account_name); $res = $this -> updatePdoChannel($supply_id,$supply_array,$db_supply,$purchase,$link); echo json_encode($res); exit(); } //获取采购详情数组 function getPurchase($purchase) { if ($purchase == '') { $purchase_array = array(); return $purchase_array; } $purchase = substr($purchase, 1, strlen($purchase) - 2); $purchase = explode("}{", $purchase); $i = -1; foreach ($purchase as $item => $value) { $value = explode(",", $value); $status = 0; foreach ($value as $k => $v) { if (empty($v)) { $status = 1; break; } } if ($status == 0) { if($value[0] >= 0) { $purchase_array[$value[0]]['purchase_id'] = $value[0]; $purchase_array[$value[0]]['product_type'] = $value[1]; $purchase_array[$value[0]]['purchaser_name'] = $value[2]; } else { $purchase_array[$i]['purchase_id'] = $i; $purchase_array[$i]['product_type'] = $value[1]; $purchase_array[$i]['purchaser_name'] = $value[2]; $i--; } } } return $purchase_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 getDbPurchase($supply_id) { global $pdo; $sql = "SELECT id AS purchase_id, product_type, purchaser_name FROM base_supplier_purchase WHERE cancel_flag = 0 AND supplier_id = " . $supply_id; writeLog("getDbPurchase base_supplier_purchase:" . $sql); $result = $pdo->query($sql); $res = $result->fetchAll(PDO::FETCH_ASSOC); if(count($res) > 0) { foreach($res as $k => $v) { $result1[$v['purchase_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 getDbSupply($supply_id) { global $pdo; $sql = "SELECT supplier_name, area_id, company_name, sett_type, sett_frequency, account_bank, account_num, account_name FROM base_supplier WHERE cancel_flag = 0 AND id = " . $supply_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 { //print_r($arr);print_r($db_arr);die; 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') { $set_array[] = $k . " = ''"; } else { $set_array[] = $k . " = '0'"; } } } $set_str = implode(",",$set_array); return $set_str; } //操作数据库 function updatePdoChannel($supply_id,$supply_array,$db_supply,$purchase,$link) { global $pdo; $user_id = getUserId(); $time = date('Y-m-d H:i:s',time()); try { $pdo->beginTransaction(); //1.操作base_supplier表 if($supply_array != $db_supply)//修改 { $set_str = $this->getUpdateSet($supply_array); $update_supplier_sql = "UPDATE base_supplier SET update_user_id = " . $user_id . ",update_time = '" . $time . "'," . $set_str . " WHERE id = " . $supply_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($purchase) > 0) { if(count($purchase['update']) > 0)//修改 { $update_purchase_array = array(); foreach($purchase['update'] as $key => $value) { unset($value['purchase_id']); $set_str = $this->getUpdateSet($value); $update_purchase_array[] = "UPDATE base_supplier_purchase SET update_user_id = " . $user_id . ",update_time = '" . $time . "'," . $set_str . " WHERE id = " . $key; } $update_purchase_sql = implode(";",$update_purchase_array); writeLog("./" . $update_purchase_sql); $result = $pdo->exec($update_purchase_sql); if (!$result) { throw new Exception("db die"); } } if(count($purchase['insert']) > 0)//增加 { $insert_purchase_sql = "INSERT INTO base_supplier_purchase ( create_user_id, create_time, supplier_id, product_type, purchaser_name ) VALUES "; foreach($purchase['insert'] as $key => $value) { $purchase_sql_array[] = "(" . $user_id . ",'" . $time . "'," . $supply_id . "," . $value['product_type'] . ",'" . $value['purchaser_name'] . "')"; } $insert_purchase_sql .= implode(",", $purchase_sql_array); writeLog("INSERT base_supplier_purchase:" . $insert_purchase_sql); $result = $pdo->exec($insert_purchase_sql); if (!$result) { throw new Exception("db die"); } } if(count($purchase['delete']) > 0)//删除 { $delete_purchase_array = array(); foreach($purchase['delete'] as $key => $value) { $delete_purchase_array[] = "UPDATE base_supplier_purchase SET update_user_id = " . $user_id . ",update_time = '" . $time . "',cancel_flag = 1 WHERE id = " . $key; } $delete_purchase_sql = implode(";",$delete_purchase_array); writeLog("delete base_supplier_sale:" . $delete_purchase_sql); $result = $pdo->exec($delete_purchase_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 . "'," . $supply_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; } } $supply_id = trim($_POST['supply_id']);//供应商id $supplier_name = trim($_POST['supplier_name']);//供应商名称 $area_id = trim($_POST['area_id']);//所属区域市id $company_name = trim($_POST['company_name']);//公司名称 $purchase = trim($_POST['purchase']);//采购详情 $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']);//联系人详情 $update_supply = new update_supply(); $update_supply -> execUpdateSupply($supply_id,$supplier_name, $area_id, $company_name,$purchase, $sett_type, $sett_frequency, $account_bank, $account_num, $account_name, $link_info) ?>