Non puoi selezionare più di 25 argomenti Gli argomenti devono iniziare con una lettera o un numero, possono includere trattini ('-') e possono essere lunghi fino a 35 caratteri.
 
 
 
 

424 righe
18 KiB

  1. <?php
  2. class update_channel
  3. {
  4. public function 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)
  5. {
  6. //1.获取销售方式详情数组
  7. $sale_array = $this->getSale($sale);
  8. //2.从数据库获取销售方式
  9. $db_sale_array = $this->getDbSale($channel_id);
  10. //3.获取联系人详情数组
  11. $link_array = $this->getLink($link_info);
  12. //4.从数据库获取联系人详情
  13. $db_link_array = $this->getDbLink($channel_id);
  14. //5.比较销售方式
  15. $sale = $this->compare($sale_array, $db_sale_array);
  16. //6,比较联系详情
  17. $link = $this->compare($link_array, $db_link_array);
  18. //7,从数据库获取渠道商详情
  19. $db_channel = $this->getDbChannel($channel_id);
  20. //8.操作数据库
  21. $channel_array = array(
  22. 'supplier_name' => $supplier_name,
  23. 'area_id' => $area_id,
  24. 'manage_type' => $manage_type,
  25. 'company_name' => $company_name,
  26. 'id_card' => $id_card,
  27. 'sett_type' => $sett_type,
  28. 'sett_frequency' => $sett_frequency,
  29. 'account_bank' => $account_bank,
  30. 'account_num' => $account_num,
  31. 'account_name' => $account_name,
  32. 'sales_man' => $sales_man,
  33. 'deduct_type' => $deduct_type,
  34. 'alert_balance' => $alert_balance
  35. );
  36. $res = $this->updatePdoChannel($channel_id, $channel_array, $db_channel, $sale, $link);
  37. echo json_encode($res);
  38. exit();
  39. }
  40. //获取销售方式详情数组
  41. function getSale($sale)
  42. {
  43. if ($sale == '') {
  44. $sale_array = array();
  45. return $sale_array;
  46. }
  47. $sale = explode(",", $sale);
  48. $key = $_COOKIE['memcache'];
  49. $sale_memcache = get_memcache('ZHANGS_SALE' . $key);
  50. foreach ($sale as $item => $value) {
  51. $sale_array[$value] = $sale_memcache[$value];
  52. }
  53. return $sale_array;
  54. }
  55. //获取联系人详情数组
  56. function getLink($link_info)
  57. {
  58. if ($link_info == '') {
  59. $link_array = array();
  60. return $link_array;
  61. }
  62. $link_info = explode(",", $link_info);
  63. $key = $_COOKIE['memcache'];
  64. $link_memcache = get_memcache('ZHANGS_LINK' . $key);
  65. foreach ($link_info as $item => $value) {
  66. $status = 0;
  67. if (empty($link_memcache[$value]['link_name']) || empty($link_memcache[$value]['contact_name'])) {
  68. $status = 1;
  69. }
  70. if ($status == 0) {
  71. $link_array[$value] = $link_memcache[$value];
  72. }
  73. }
  74. return $link_array;
  75. }
  76. //从数据库获取销售方式详情数组
  77. function getDbSale($channel_id)
  78. {
  79. global $pdo;
  80. $sql = "SELECT
  81. id AS sale_id,
  82. prod_supplier_id,
  83. product_type,
  84. parent_type,
  85. sale_type,
  86. commision_flag,
  87. commision_type,
  88. back_commision_type,
  89. back_commision_method,
  90. back_percent,
  91. back_value
  92. FROM
  93. base_supplier_sale
  94. WHERE
  95. cancel_flag = 0
  96. AND supplier_id = " . $channel_id;
  97. writeLog("getDbSale base_supplier_sale:" . $sql);
  98. $result = $pdo->query($sql);
  99. $res = $result->fetchAll(PDO::FETCH_ASSOC);
  100. if (count($res) > 0) {
  101. foreach ($res as $k => $v) {
  102. $result1[$v['sale_id']] = $v;
  103. }
  104. } else {
  105. $result1 = array();
  106. }
  107. return $result1;
  108. }
  109. //从数据库获取联系人详情
  110. function getDbLink($channel_id)
  111. {
  112. global $pdo;
  113. $sql = "SELECT
  114. id as link_id,
  115. link_name,
  116. contact_name,
  117. contact_mobile,
  118. contact_telphone,
  119. fax,
  120. email,
  121. remark
  122. FROM
  123. base_supplier_link
  124. WHERE
  125. cancel_flag = 0
  126. AND supplier_id = " . $channel_id;
  127. writeLog("getDbLink base_supplier_link:" . $sql);
  128. $result = $pdo->query($sql);
  129. $res = $result->fetchAll(PDO::FETCH_ASSOC);
  130. if (count($res) > 0) {
  131. foreach ($res as $k => $v) {
  132. $result1[$v['link_id']] = $v;
  133. }
  134. } else {
  135. $result1 = array();
  136. }
  137. return $result1;
  138. }
  139. //从数据库获取渠道商详情
  140. function getDbChannel($channel_id)
  141. {
  142. global $pdo;
  143. $sql = "SELECT
  144. supplier_name,
  145. area_id,
  146. manage_type,
  147. company_name,
  148. id_card,
  149. sett_type,
  150. sett_frequency,
  151. account_bank,
  152. account_num,
  153. account_name,
  154. sales_man
  155. FROM
  156. base_supplier
  157. WHERE
  158. cancel_flag = 0
  159. AND id = " . $channel_id;
  160. writeLog("getDbChannel base_supplier:" . $sql);
  161. $result = $pdo->query($sql);
  162. $res = $result->fetchAll(PDO::FETCH_ASSOC);
  163. $res = $res[0];
  164. return $res;
  165. }
  166. //比较数组(前台数组,数据库数组)
  167. function compare($arr, $db_arr)
  168. {
  169. $result = array();
  170. if (count($db_arr) == 0 && count($arr) == 0) {
  171. return $result;
  172. } elseif (count($db_arr) == 0) {
  173. $result['insert'] = $arr;
  174. return $result;
  175. } elseif (count($arr) == 0) {
  176. $result['delete'] = $db_arr;
  177. return $result;
  178. } else {
  179. foreach ($arr as $key => $value) {
  180. if (isset($db_arr[$key])) {
  181. if ($arr != $db_arr) {
  182. $result['update'][$key] = $value;
  183. }
  184. } else {
  185. $result['insert'][$key] = $value;
  186. }
  187. }
  188. foreach ($db_arr as $key => $value) {
  189. if (!isset($arr[$key])) {
  190. $result['delete'][$key] = $value;
  191. }
  192. }
  193. return $result;
  194. }
  195. }
  196. //获取update操作中的set数据
  197. function getUpdateSet($arr)
  198. {
  199. $set_array = array();
  200. foreach ($arr as $k => $v) {
  201. if (!empty($v)) {
  202. $set_array[] = $k . " = '" . $v . "'";
  203. } else {
  204. 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') {
  205. $set_array[] = $k . " = ''";
  206. } else {
  207. $set_array[] = $k . " = '0'";
  208. }
  209. }
  210. }
  211. $set_str = implode(",", $set_array);
  212. return $set_str;
  213. }
  214. //操作数据库
  215. function updatePdoChannel($channel_id, $channel_array, $db_channel, $sale, $link)
  216. {
  217. global $pdo;
  218. $user_id = getUserId();//1;
  219. $time = date('Y-m-d H:i:s', time());
  220. try {
  221. $pdo->beginTransaction();
  222. //1.操作base_supplier表
  223. if ($channel_array != $db_channel)//修改
  224. {
  225. $set_str = $this->getUpdateSet($channel_array);
  226. $update_supplier_sql = "UPDATE base_supplier
  227. SET update_user_id = " . $user_id . ",update_time = '" . $time . "'," . $set_str . "
  228. WHERE
  229. id = " . $channel_id;
  230. writeLog("UPDATE base_supplier:" . $update_supplier_sql);
  231. $result = $pdo->exec($update_supplier_sql);
  232. if (!$result) {
  233. throw new Exception("db die");
  234. }
  235. }
  236. //2.操作base_supplier_sale表
  237. if (count($sale) > 0) {
  238. if (count($sale['update']) > 0)//修改
  239. {
  240. $update_sale_array = array();
  241. foreach ($sale['update'] as $key => $value) {
  242. unset($value['sale_id']);
  243. $set_str = $this->getUpdateSet($value);
  244. $update_sale_array[] = "UPDATE base_supplier_sale
  245. SET update_user_id = " . $user_id . ",update_time = '" . $time . "'," . $set_str . "
  246. WHERE
  247. id = " . $key;
  248. }
  249. $update_sale_sql = implode(";", $update_sale_array);
  250. writeLog("UPDATE base_supplier_sale:" . $update_sale_sql);
  251. $result = $pdo->exec($update_sale_sql);
  252. if (!$result) {
  253. throw new Exception("db die");
  254. }
  255. }
  256. if (count($sale['insert']) > 0)//增加
  257. {
  258. $insert_sale_sql = "INSERT INTO base_supplier_sale (
  259. create_user_id,
  260. create_time,
  261. supplier_id,
  262. prod_supplier_id,
  263. product_type,
  264. parent_type,
  265. sale_type,
  266. commision_flag,
  267. commision_type,
  268. back_commision_type,
  269. back_commision_method,
  270. back_percent,
  271. back_value
  272. )
  273. VALUES ";
  274. foreach ($sale['insert'] as $key => $value) {
  275. $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'] . "')";
  276. }
  277. $insert_sale_sql .= implode(",", $sale_sql_array);
  278. writeLog("INSERT base_supplier_purchase:" . $insert_sale_sql);
  279. $result = $pdo->exec($insert_sale_sql);
  280. if (!$result) {
  281. throw new Exception("db die");
  282. }
  283. }
  284. if (count($sale['delete']) > 0)//删除
  285. {
  286. $delete_sale_array = array();
  287. foreach ($sale['delete'] as $key => $value) {
  288. $delete_sale_array[] = "UPDATE base_supplier_sale
  289. SET update_user_id = " . $user_id . ",update_time = '" . $time . "',cancel_flag = 1
  290. WHERE
  291. id = " . $key;
  292. }
  293. $delete_sale_sql = implode(";", $delete_sale_array);
  294. writeLog("delete base_supplier_sale:" . $delete_sale_sql);
  295. $result = $pdo->exec($delete_sale_sql);
  296. if (!$result) {
  297. throw new Exception("db die");
  298. }
  299. }
  300. }
  301. //3.操作base_supplier_link表
  302. if (count($link) > 0) {
  303. if (count($link['update']) > 0)//修改
  304. {
  305. $update_link_array = array();
  306. foreach ($link['update'] as $key => $value) {
  307. unset($value['link_id']);
  308. $set_str = $this->getUpdateSet($value);
  309. $update_link_array[] = "UPDATE base_supplier_link
  310. SET update_user_id = " . $user_id . ",update_time = '" . $time . "'," . $set_str . "
  311. WHERE
  312. id = " . $key;
  313. }
  314. $update_link_sql = implode(";", $update_link_array);
  315. writeLog("UPDATE base_supplier_link:" . $update_link_sql);
  316. $result = $pdo->exec($update_link_sql);
  317. if (!$result) {
  318. throw new Exception("db die");
  319. }
  320. }
  321. if (count($link['insert']) > 0)//增加
  322. {
  323. $insert_link_sql = "INSERT INTO base_supplier_link (
  324. create_user_id,
  325. create_time,
  326. supplier_id,
  327. link_name,
  328. contact_name,
  329. contact_mobile,
  330. contact_telphone,
  331. fax,
  332. email,
  333. remark
  334. )
  335. VALUES";
  336. foreach ($link['insert'] as $key => $value) {
  337. $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'] . "')";
  338. }
  339. $insert_link_sql .= implode(",", $link_sql_array);
  340. writeLog("INSERT base_supplier_purchase:" . $insert_link_sql);
  341. $result = $pdo->exec($insert_link_sql);
  342. if (!$result) {
  343. throw new Exception("db die");
  344. }
  345. }
  346. if (count($link['delete']) > 0)//删除
  347. {
  348. $delete_link_array = array();
  349. foreach ($link['delete'] as $key => $value) {
  350. $delete_link_array[] = "UPDATE base_supplier_link
  351. SET update_user_id = " . $user_id . ",update_time = '" . $time . "',cancel_flag = 1
  352. WHERE
  353. id = " . $key;
  354. }
  355. $delete_link_sql = implode(";", $delete_link_array);
  356. writeLog("delete base_supplier_sale:" . $delete_link_sql);
  357. $result = $pdo->exec($delete_link_sql);
  358. if (!$result) {
  359. throw new Exception("db die");
  360. }
  361. }
  362. }
  363. $pdo->commit();
  364. //4.删除缓存
  365. $key = $_COOKIE['memcache'];
  366. delete_memcache('ZHANGS_LINK' . $key);
  367. delete_memcache('ZHANGS_SALE' . $key);
  368. $json['code'] = '0';
  369. $json['info'] = '修改数据成功';
  370. } catch (PDOException $ex) {
  371. $pdo->rollBack();
  372. $json['code'] = '1';
  373. $json['info'] = '修改失败';
  374. }
  375. return $json;
  376. }
  377. }
  378. $channel_id = trim($_POST['channel_id']);//渠道商名称
  379. $supplier_name = trim($_POST['supplier_name']);//渠道商名称
  380. $area_id = trim($_POST['area_id']);//所属区域市id
  381. $manage_type = trim($_POST['manage_type']);//经营性质 1:公司 2:个人
  382. $company_name = trim($_POST['company_name']);//公司名称
  383. $id_card = trim($_POST['id_card']);//身份证号(企业传空)
  384. $sale = trim($_POST['sale']);//销售方式
  385. $sett_type = trim($_POST['sett_type']);//结算方式 (授信:275,预付:288,单结:292)
  386. $sett_frequency = trim($_POST['sett_frequency']);//结算周期(日结:293,周结:294,月结:295)
  387. $account_bank = trim($_POST['account_bank']);//开户银行
  388. $account_num = trim($_POST['account_num']);//银行账号
  389. $account_name = trim($_POST['account_name']);//账号名称
  390. $link_info = trim($_POST['link_info']);//联系人详情
  391. $sales_man = trim($_POST['sales_man']);//业务员
  392. $deduct_type = trim($_POST['deduct_type']);
  393. $alert_balance = trim($_POST['alert_balance']);
  394. $update_channel = new update_channel();
  395. $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)
  396. ?>