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, 'deduct_type' => $deduct_type, 'alert_balance' => $alert_balance ); $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']);//业务员 $deduct_type = trim($_POST['deduct_type']); $alert_balance = trim($_POST['alert_balance']); $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, $deduct_type, $alert_balance) ?>