You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

1027 lines
37 KiB

  1. <?php
  2. /**
  3. * 张帅
  4. * Class supplier
  5. */
  6. class supplier extends base
  7. {
  8. /**
  9. * 添加供应商
  10. * @param $param
  11. */
  12. public function addSupplier($param)
  13. {
  14. $supplier_name = isset($param['supplier_name']) ? trim($param['supplier_name']) : false;//供应商名称
  15. $area_id = isset($param['area_id']) ? trim($param['area_id']) : false;//所属区域市id
  16. $company_name = isset($param['company_name']) ? trim($param['company_name']) : false;//公司名称
  17. $purchase = isset($param['purchase']) ? trim($param['purchase']) : false;//采购详情
  18. $sett_type = isset($param['sett_type']) ? trim($param['sett_type']) : false;//结算方式 (授信:275,预付:288,单结:292)
  19. $sett_frequency = isset($param['sett_frequency']) ? trim($param['sett_frequency']) : false;//结算周期(日结:293,周结:294,月结:295)
  20. $account_bank = isset($param['account_bank']) ? trim($param['account_bank']) : false;//开户银行
  21. $account_num = isset($param['account_num']) ? trim($param['account_num']) : false;//银行账号
  22. $account_name = isset($param['account_name']) ? trim($param['account_name']) : false;//账号名称
  23. $link_info = isset($param['link_info']) ? trim($param['link_info']) : false;//联系人详情
  24. if (!$supplier_name || !$area_id || !$company_name || false === $purchase || !$sett_type || !$sett_frequency || false === $account_bank || false === $account_num || false === $account_name || false === $link_info) {
  25. $json['code'] = '2';
  26. $json['info'] = '缺少必要参数';
  27. return $json;
  28. }
  29. $sql = "SELECT
  30. supplier_name
  31. FROM
  32. base_supplier
  33. WHERE
  34. cancel_flag = 0
  35. AND supplier_name = '" . $supplier_name . "' AND supplier_type=187 ";
  36. $result = $this->query($sql);
  37. if(count($result) > 0)
  38. {
  39. $json['code'] = '1';
  40. $json['info'] = '用户名已存在';
  41. return $json;
  42. }
  43. //1.获取采购信息详情数组
  44. $purchase_array = $this->getPurchaseInfo($purchase);
  45. //2.获取联系人详情数组
  46. $link_array = $this->getLinkInfo($link_info);
  47. //3.向数据库中中添加数据
  48. $res = $this->addPdoSupply($supplier_name, $area_id, $company_name, $purchase_array, $sett_type, $sett_frequency, $account_bank, $account_num, $account_name, $link_array);
  49. return $res;
  50. }
  51. //获取采购信息详情数组
  52. private function getPurchaseInfo($purchase)
  53. {
  54. if ($purchase == '') {
  55. $purchase_array = array();
  56. return $purchase_array;
  57. }
  58. $purchase = substr($purchase, 1, strlen($purchase) - 2);
  59. $purchase = explode("}{", $purchase);
  60. $i = 0;
  61. foreach ($purchase as $item => $value) {
  62. $value = explode(",", $value);
  63. $status = 0;
  64. foreach ($value as $k => $v) {
  65. if (empty($v)) {
  66. $status = 1;
  67. break;
  68. }
  69. }
  70. if ($status == 0) {
  71. $purchase_array[$i]['product_type'] = $value[0];
  72. $purchase_array[$i]['purchaser_name'] = $value[1];
  73. $i++;
  74. }
  75. }
  76. return $purchase_array;
  77. }
  78. //获取联系人详情数组
  79. private function getLinkInfo($link_info)
  80. {
  81. if ($link_info == '') {
  82. $link_array = array();
  83. return $link_array;
  84. }
  85. $link_info = explode(",", $link_info);
  86. $key = $_COOKIE['memcache'];
  87. $link_memcache = $this->get_memcache('ZHANGS_LINK' . $key);
  88. $i = 0;
  89. foreach ($link_info as $item => $value) {
  90. $status = 0;
  91. if (empty($link_memcache[$value]['link_name']) || empty($link_memcache[$value]['contact_name'])) {
  92. $status = 1;
  93. }
  94. if ($status == 0) {
  95. $link_array[$i] = $link_memcache[$value];
  96. $i++;
  97. }
  98. }
  99. return $link_array;
  100. }
  101. //在数据库中添加供应商信息
  102. private function addPdoSupply($supplier_name, $area_id, $company_name, $purchase_array, $sett_type, $sett_frequency, $account_bank, $account_num, $account_name, $link_array)
  103. {
  104. $user_id = $this->user_id;
  105. //运营主体
  106. $main_corp_id_sql = "select main_corp_id from base_user where id = " . $user_id . ' and cancel_flag = 0 limit 1';
  107. $main_corp_id = $this->query($main_corp_id_sql);
  108. $main_corp_id = $main_corp_id[0]['main_corp_id'];
  109. $time = date('Y-m-d H:i:s', time());
  110. //1.添加base_supplier表
  111. $supplier_sql = "INSERT INTO base_supplier (
  112. create_user_id,
  113. create_time,
  114. supplier_type,
  115. supplier_name,
  116. area_id,
  117. company_name,
  118. is_disabled,
  119. sett_type,
  120. sett_frequency,
  121. account_bank,
  122. account_num,
  123. account_name,
  124. main_corp_id
  125. )
  126. VALUES
  127. (" . $user_id . ",'" . $time . "',187,'" . $supplier_name . "'," . $area_id . ",'" . $company_name . "',0," . $sett_type . "," . $sett_frequency . ",'" . $account_bank . "','" . $account_num . "','" . $account_name . "'," . $main_corp_id .")";
  128. zzcsUtils::writeLog($supplier_sql);
  129. $result1 = $this->insert($supplier_sql);
  130. $supplier_id = $result1;
  131. $insert_sql = array();
  132. //2.添加base_supplier_purchase表
  133. if(count($purchase_array) > 0)
  134. {
  135. $purchase_sql = "INSERT INTO base_supplier_purchase (
  136. create_user_id,
  137. create_time,
  138. supplier_id,
  139. product_type,
  140. purchaser_name
  141. )
  142. VALUES ";
  143. foreach ($purchase_array as $key => $v) {
  144. $purchase_sql_array[] = "(" . $user_id . ",'" . $time . "'," . $supplier_id . "," . $v['product_type'] . ",'" . $v['purchaser_name'] . "')";
  145. }
  146. $purchase_sql .= implode(",", $purchase_sql_array);
  147. $insert_sql[] = $purchase_sql;
  148. }
  149. //3.添加base_supplier_link表
  150. if(count($link_array) > 0)
  151. {
  152. $link_sql = "INSERT INTO base_supplier_link (
  153. create_user_id,
  154. create_time,
  155. supplier_id,
  156. link_name,
  157. contact_name,
  158. contact_mobile,
  159. contact_telphone,
  160. fax,
  161. email,
  162. remark
  163. )
  164. VALUES ";
  165. foreach ($link_array as $key => $v) {
  166. $link_sql_array[] = "(" . $user_id . ",'" . $time . "'," . $supplier_id . ",'" . $v['link_name'] . "','" . $v['contact_name'] . "','" . $v['contact_mobile'] . "','" . $v['contact_telphone'] . "','" . $v['fax'] . "','" . $v['email'] . "','" . $v['remark'] . "')";
  167. }
  168. $link_sql .= implode(",", $link_sql_array);
  169. $insert_sql[] = $link_sql;
  170. }
  171. if(count($insert_sql) > 0)
  172. {
  173. $insert_sql = implode(';',$insert_sql);
  174. zzcsUtils::writeLog($insert_sql);
  175. $result2 = $this->exec($insert_sql);
  176. }
  177. else
  178. {
  179. $result2 = true;
  180. }
  181. if($result1 && $result2)
  182. {
  183. //4.删除缓存
  184. $key = $_COOKIE['memcache'];
  185. $this->delete_memcache('ZHANGS_LINK' . $key);
  186. $json['code'] = '0';
  187. $json['info'] = '添加供应商成功';
  188. }
  189. else
  190. {
  191. $json['code'] = '1';
  192. $json['info'] = '添加供应商失败';
  193. }
  194. return $json;
  195. }
  196. /**
  197. * 获取供应商详情
  198. */
  199. public function getSupplierInfo($param)
  200. {
  201. $supply_id = isset($param['supply_id']) ? trim($param['supply_id']) : false;//供应商id
  202. if(!$supply_id)
  203. {
  204. $json['code'] = '2';
  205. $json['info'] = '缺少必要参数';
  206. return $json;
  207. }
  208. $dict_type = array(
  209. 25 => '酒店',
  210. 259 => '车队',
  211. 310 => '巴士',
  212. 311 => '门票'
  213. );
  214. //1.获取供应商基本信息
  215. $supply = $this->getSupplier($supply_id);
  216. if(isset($supply['code']) && $supply['code'] == '1')
  217. {
  218. return $supply;
  219. }
  220. //2.获取采购类型基本信息
  221. $supply['purchase'] = $this->getPurchase($supply_id);
  222. //3.获取联系信息
  223. $supply['link_info'] = $this->getLink($supply_id);
  224. //4将联系信息存入缓存
  225. $this -> setLinkMen($supply['link_info']);
  226. $json['code'] = '0';
  227. $json['info'] = '返回数据成功';
  228. $json['list'] = $supply;
  229. return $json;
  230. }
  231. //获得base_supplier表数据
  232. private function getSupplier($supply_id)
  233. {
  234. $sql = "SELECT
  235. id,supplier_name,area_id,company_name,sett_type,sett_frequency,account_bank,account_num,account_name
  236. FROM
  237. base_supplier
  238. WHERE
  239. cancel_flag = 0
  240. AND id = " . $supply_id;
  241. $res = $this->query($sql);
  242. if(count($res) == 0 )
  243. {
  244. $json['code'] = '1';
  245. $json['info'] = '数据已不存在';
  246. return $json;
  247. }
  248. $res = $res[0];
  249. $area = $this -> getArea($res['area_id']);
  250. if(isset($area['code']) && $area['code'] == '1')
  251. {
  252. return $area;
  253. }
  254. unset($res['area_id']);
  255. $res = array_merge($res,$area);
  256. return $res;
  257. }
  258. //获取所属城市基本信息
  259. private function getArea($area_id)
  260. {
  261. $sql = "SELECT
  262. id,area_name,parent_id
  263. FROM
  264. base_area
  265. WHERE
  266. cancel_flag = 0
  267. AND id = " . $area_id;
  268. $res1 = $this->query($sql);
  269. if(count($res1) == 0)
  270. {
  271. $json['code'] = '1';
  272. $json['info'] = 'base_area出错';
  273. return $json;
  274. }
  275. $res1 = $res1[0];
  276. if($res1['parent_id'] == 0)
  277. {
  278. $res['province_id'] = $res1['id'];
  279. $res['province_name'] = $res1['area_name'];
  280. }
  281. else
  282. {
  283. $sql = "SELECT
  284. id,area_name
  285. FROM
  286. base_area
  287. WHERE
  288. cancel_flag = 0
  289. AND id = " . $res1['parent_id'];
  290. $res2 = $this->query($sql);
  291. $res2 = $res2[0];
  292. if(count($res2) == 0)
  293. {
  294. $json['code'] = '1';
  295. $json['info'] = 'base_area出错';
  296. return $json;
  297. }
  298. $res['province_id'] = $res2['id'];
  299. $res['province_name'] = $res2['area_name'];
  300. $res['city_id'] = $res1['id'];
  301. $res['city_name'] = $res1['area_name'];
  302. }
  303. return $res;
  304. }
  305. //获取采购信息
  306. private function getPurchase($supply_id)
  307. {
  308. $sql = "SELECT
  309. id,product_type,purchaser_name
  310. FROM
  311. base_supplier_purchase
  312. WHERE
  313. cancel_flag = 0
  314. AND supplier_id = " . $supply_id;
  315. $res = $this->query($sql);
  316. return $res;
  317. }
  318. //获取联系信息
  319. private function getLink($supply_id)
  320. {
  321. $sql = "SELECT
  322. id,link_name,contact_name,contact_mobile,contact_telphone,fax,email,remark
  323. FROM
  324. base_supplier_link
  325. WHERE
  326. cancel_flag = 0
  327. AND supplier_id = " . $supply_id;
  328. $res = $this->query($sql);
  329. return $res;
  330. }
  331. //将联系信息存入缓存
  332. private function setLinkMen($link)
  333. {
  334. if(!isset($_COOKIE['memcache']))
  335. {
  336. $time = time();
  337. setcookie('memcache',time(),time()+36000,"/");
  338. $_COOKIE['memcache'] = $time;
  339. }
  340. $key = $_COOKIE['memcache'];
  341. foreach($link as $k=>$v)
  342. {
  343. $link_memcache[$v['id']] = $v;
  344. $link_memcache[$v['id']]['link_id'] = $v['id'];
  345. unset($link_memcache[$v['id']]['id']);
  346. }
  347. $this->set_memcache("ZHANGS_LINK" . $key,$link_memcache);
  348. }
  349. /**
  350. * 修改供应商信息
  351. * @param $param
  352. * @return mixed
  353. */
  354. public function updateSupply($param)
  355. {
  356. $supply_id = isset($param['supply_id']) ? trim($param['supply_id']) : false;//供应商id
  357. $supplier_name = isset($param['supplier_name']) ? trim($param['supplier_name']) : false;//供应商名称
  358. $area_id = isset($param['area_id']) ? trim($param['area_id']) : false;//所属区域市id
  359. $company_name = isset($param['company_name']) ? trim($param['company_name']) : false;//公司名称
  360. $purchase = isset($param['purchase']) ? trim($param['purchase']) : false;//采购详情
  361. $sett_type = isset($param['sett_type']) ? trim($param['sett_type']) : false;//结算方式 (授信:275,预付:288,单结:292)
  362. $sett_frequency = isset($param['sett_frequency']) ? trim($param['sett_frequency']) : false;//结算周期(日结:293,周结:294,月结:295)
  363. $account_bank = isset($param['account_bank']) ? trim($param['account_bank']) : false;//开户银行
  364. $account_num = isset($param['account_num']) ? trim($param['account_num']) : false;//银行账号
  365. $account_name = isset($param['account_name']) ? trim($param['account_name']) : false;//账号名称
  366. $link_info = isset($param['link_info']) ? trim($param['link_info']) : false;//联系人详情
  367. if (false === $supply_id || !$supplier_name || !$area_id || !$company_name || false === $purchase || !$sett_type || !$sett_frequency || false === $account_bank || false === $account_num || false === $account_name || false === $link_info) {
  368. $json['code'] = '2';
  369. $json['info'] = '缺少必要参数';
  370. return $json;
  371. }
  372. //1.获取采购详情数组
  373. $purchase_array = $this->getUpdatePurchase($purchase);
  374. //2.从数据库获取采购详情
  375. $db_purchase_array = $this->getDbPurchase($supply_id);
  376. //3.获取联系人详情数组
  377. $link_array = $this->getUpdateLink($link_info);
  378. //4.从数据库获取联系人详情
  379. $db_link_array = $this->getDbLink($supply_id);
  380. //5.比较采购详情
  381. $purchase = $this->compare($purchase_array, $db_purchase_array);
  382. //6,比较联系详情
  383. $link = $this->compare($link_array, $db_link_array);
  384. //7,从数据库获取供应商详情
  385. $db_supply = $this->getDbSupply($supply_id);
  386. //8.操作数据库
  387. $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);
  388. $res = $this -> updatePdoChannel($supply_id,$supply_array,$db_supply,$purchase,$link);
  389. return $res;
  390. }
  391. //获取采购详情数组
  392. private function getUpdatePurchase($purchase)
  393. {
  394. if ($purchase == '') {
  395. $purchase_array = array();
  396. return $purchase_array;
  397. }
  398. $purchase = substr($purchase, 1, strlen($purchase) - 2);
  399. $purchase = explode("}{", $purchase);
  400. $i = -1;
  401. foreach ($purchase as $item => $value) {
  402. $value = explode(",", $value);
  403. $status = 0;
  404. foreach ($value as $k => $v) {
  405. if (empty($v)) {
  406. $status = 1;
  407. break;
  408. }
  409. }
  410. if ($status == 0) {
  411. if($value[0] >= 0)
  412. {
  413. $purchase_array[$value[0]]['purchase_id'] = $value[0];
  414. $purchase_array[$value[0]]['product_type'] = $value[1];
  415. $purchase_array[$value[0]]['purchaser_name'] = $value[2];
  416. }
  417. else
  418. {
  419. $purchase_array[$i]['purchase_id'] = $i;
  420. $purchase_array[$i]['product_type'] = $value[1];
  421. $purchase_array[$i]['purchaser_name'] = $value[2];
  422. $i--;
  423. }
  424. }
  425. }
  426. return $purchase_array;
  427. }
  428. //获取联系人详情数组
  429. private function getUpdateLink($link_info)
  430. {
  431. if ($link_info == '') {
  432. $link_array = array();
  433. return $link_array;
  434. }
  435. $link_info = explode(",", $link_info);
  436. $key = $_COOKIE['memcache'];
  437. $link_memcache = $this->get_memcache('ZHANGS_LINK' . $key);
  438. foreach ($link_info as $item => $value) {
  439. $status = 0;
  440. if (empty($link_memcache[$value]['link_name']) || empty($link_memcache[$value]['contact_name'])) {
  441. $status = 1;
  442. }
  443. if ($status == 0) {
  444. $link_array[$value] = $link_memcache[$value];
  445. }
  446. }
  447. return $link_array;
  448. }
  449. //从数据库获取采购详情数组
  450. private function getDbPurchase($supply_id)
  451. {
  452. $sql = "SELECT
  453. id AS purchase_id,product_type,purchaser_name
  454. FROM
  455. base_supplier_purchase
  456. WHERE
  457. cancel_flag = 0
  458. AND supplier_id = " . $supply_id;
  459. $res = $this->query($sql);
  460. if(count($res) > 0)
  461. {
  462. foreach($res as $k => $v)
  463. {
  464. $result1[$v['purchase_id']] = $v;
  465. }
  466. }
  467. else
  468. {
  469. $result1= array();
  470. }
  471. return $result1;
  472. }
  473. //从数据库获取联系人详情
  474. private function getDbLink($channel_id)
  475. {
  476. $sql = "SELECT
  477. id as link_id,link_name,contact_name,contact_mobile,contact_telphone,fax,email,remark
  478. FROM
  479. base_supplier_link
  480. WHERE
  481. cancel_flag = 0
  482. AND supplier_id = " . $channel_id;
  483. $res = $this->query($sql);
  484. if(count($res) > 0)
  485. {
  486. foreach($res as $k => $v)
  487. {
  488. $result1[$v['link_id']] = $v;
  489. }
  490. }
  491. else
  492. {
  493. $result1= array();
  494. }
  495. return $result1;
  496. }
  497. //从数据库获取供应商详情
  498. private function getDbSupply($supply_id)
  499. {
  500. $sql = "SELECT
  501. supplier_name,area_id,company_name,sett_type,sett_frequency,account_bank,account_num,account_name
  502. FROM
  503. base_supplier
  504. WHERE
  505. cancel_flag = 0
  506. AND id = " . $supply_id;
  507. $res = $this->query($sql);
  508. $res = $res[0];
  509. return $res;
  510. }
  511. //比较数组(前台数组,数据库数组)
  512. private function compare($arr, $db_arr)
  513. {
  514. $result = array();
  515. if(count($db_arr) == 0 && count($arr) == 0)
  516. {return $result;}
  517. elseif (count($db_arr) == 0)
  518. {
  519. $result['insert'] = $arr;
  520. return $result;
  521. }
  522. elseif (count($arr) == 0)
  523. {
  524. $result['delete'] = $db_arr;
  525. return $result;
  526. }
  527. else
  528. {
  529. foreach ($arr as $key => $value) {
  530. if(isset($db_arr[$key]))
  531. {
  532. if($arr != $db_arr)
  533. {
  534. $result['update'][$key] = $value;
  535. }
  536. }
  537. else
  538. {
  539. $result['insert'][$key] = $value;
  540. }
  541. }
  542. foreach($db_arr as $key => $value)
  543. {
  544. if(!isset($arr[$key]))
  545. {
  546. $result['delete'][$key] = $value;
  547. }
  548. }
  549. return $result;
  550. }
  551. }
  552. //获取update操作中的set数据
  553. private function getUpdateSet($arr)
  554. {
  555. $set_array = array();
  556. foreach($arr as $k => $v)
  557. {
  558. if(!empty($v))
  559. {
  560. $set_array[] = $k . " = '" . $v . "'";
  561. }
  562. else
  563. {
  564. 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')
  565. {
  566. $set_array[] = $k . " = ''";
  567. }
  568. else
  569. {
  570. $set_array[] = $k . " = '0'";
  571. }
  572. }
  573. }
  574. $set_str = implode(",",$set_array);
  575. return $set_str;
  576. }
  577. //操作数据库
  578. private function updatePdoChannel($supply_id,$supply_array,$db_supply,$purchase,$link)
  579. {
  580. $user_id = $this->user_id;
  581. $time = date('Y-m-d H:i:s',time());
  582. $update_sql = array();
  583. //1.操作base_supplier表
  584. if($supply_array != $db_supply)//修改
  585. {
  586. $set_str = $this->getUpdateSet($supply_array);
  587. $update_supplier_sql = "UPDATE base_supplier
  588. SET update_user_id = " . $user_id . ",update_time = '" . $time . "'," . $set_str . "
  589. WHERE
  590. id = " . $supply_id;
  591. $update_sql[] = $update_supplier_sql;
  592. }
  593. //2.操作base_supplier_sale表
  594. if(count($purchase) > 0)
  595. {
  596. if(count($purchase['update']) > 0)//修改
  597. {
  598. $update_purchase_array = array();
  599. foreach($purchase['update'] as $key => $value)
  600. {
  601. unset($value['purchase_id']);
  602. $set_str = $this->getUpdateSet($value);
  603. $update_purchase_array[] = "UPDATE base_supplier_purchase
  604. SET update_user_id = " . $user_id . ",update_time = '" . $time . "'," . $set_str . "
  605. WHERE
  606. id = " . $key;
  607. }
  608. $update_purchase_sql = implode(";",$update_purchase_array);
  609. $update_sql[] = $update_purchase_sql;
  610. }
  611. if(count($purchase['insert']) > 0)//增加
  612. {
  613. $insert_purchase_sql = "INSERT INTO base_supplier_purchase (
  614. create_user_id,
  615. create_time,
  616. supplier_id,
  617. product_type,
  618. purchaser_name
  619. )
  620. VALUES ";
  621. foreach($purchase['insert'] as $key => $value)
  622. {
  623. $purchase_sql_array[] = "(" . $user_id . ",'" . $time . "'," . $supply_id . "," . $value['product_type'] . ",'" . $value['purchaser_name'] . "')";
  624. }
  625. $insert_purchase_sql .= implode(",", $purchase_sql_array);
  626. $update_sql[] = $insert_purchase_sql;
  627. }
  628. if(count($purchase['delete']) > 0)//删除
  629. {
  630. $delete_purchase_array = array();
  631. foreach($purchase['delete'] as $key => $value)
  632. {
  633. $delete_purchase_array[] = "UPDATE base_supplier_purchase
  634. SET update_user_id = " . $user_id . ",update_time = '" . $time . "',cancel_flag = 1
  635. WHERE
  636. id = " . $key;
  637. }
  638. $delete_purchase_sql = implode(";",$delete_purchase_array);
  639. $update_sql[] = $delete_purchase_sql;
  640. }
  641. }
  642. //3.操作base_supplier_link表
  643. if(count($link) > 0)
  644. {
  645. if(count($link['update']) > 0)//修改
  646. {
  647. $update_link_array = array();
  648. foreach($link['update'] as $key => $value)
  649. {
  650. unset($value['link_id']);
  651. $set_str = $this->getUpdateSet($value);
  652. $update_link_array[] = "UPDATE base_supplier_link
  653. SET update_user_id = " . $user_id . ",update_time = '" . $time . "'," . $set_str . "
  654. WHERE
  655. id = " . $key;
  656. }
  657. $update_link_sql = implode(";",$update_link_array);
  658. $update_sql[] = $update_link_sql;
  659. }
  660. if(count($link['insert']) > 0)//增加
  661. {
  662. $insert_link_sql = "INSERT INTO base_supplier_link (
  663. create_user_id,
  664. create_time,
  665. supplier_id,
  666. link_name,
  667. contact_name,
  668. contact_mobile,
  669. contact_telphone,
  670. fax,
  671. email,
  672. remark
  673. )
  674. VALUES";
  675. foreach($link['insert'] as $key => $value)
  676. {
  677. $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'] . "')";
  678. }
  679. $insert_link_sql .= implode(",", $link_sql_array);
  680. $update_sql[] = $insert_link_sql;
  681. }
  682. if(count($link['delete']) > 0)//删除
  683. {
  684. $delete_link_array = array();
  685. foreach($link['delete'] as $key => $value)
  686. {
  687. $delete_link_array[] = "UPDATE base_supplier_link
  688. SET update_user_id = " . $user_id . ",update_time = '" . $time . "',cancel_flag = 1
  689. WHERE
  690. id = " . $key;
  691. }
  692. $delete_link_sql = implode(";",$delete_link_array);
  693. $update_sql[] = $delete_link_sql;
  694. }
  695. }
  696. if(count($update_sql) > 0)
  697. {
  698. $update_sql = implode(';',$update_sql);
  699. zzcsUtils::writeLog($update_sql);
  700. $result = $this->insert($update_sql);
  701. }
  702. else
  703. {
  704. $result = true;
  705. }
  706. if($result)
  707. {
  708. //4.删除缓存
  709. $key = $_COOKIE['memcache'];
  710. $this->delete_memcache('ZHANGS_LINK' . $key);
  711. $this->delete_memcache('ZHANGS_SALE' . $key);
  712. $json['code'] = '0';
  713. $json['info'] = '修改供应商成功';
  714. }
  715. else
  716. {
  717. $json['code'] = '1';
  718. $json['info'] = '修改供应商失败';
  719. }
  720. return $json;
  721. }
  722. /**
  723. * 获取供应商列表
  724. */
  725. public function getSupplierList($param)
  726. {
  727. $supplier_name = isset($param['supplier_name']) ? trim($param['supplier_name']) : false;//供应商名称
  728. $product_type = isset($param['product_type']) ? trim($param['product_type']) : false;//采购范围
  729. $is_disabled = isset($param['is_disabled']) ? trim($param['is_disabled']) : false;//状态
  730. $pagesize = isset($param['pagesize']) ? trim($param['pagesize']) : false;//每页的数据量
  731. $current = isset($param['current']) ? trim($param['current']) : false;//当前页数
  732. if( false === $supplier_name || false === $product_type || false === $is_disabled || false === $pagesize || false === $current )
  733. {
  734. $json['code'] = '2';
  735. $json['info'] = '缺少必要参数';
  736. return $json;
  737. }
  738. //1.获取筛选条件
  739. $sql_where = $this->getWhere($supplier_name, $is_disabled);
  740. //2.获取数据库原始数据
  741. $db_data = $this->getDbData($sql_where, $product_type,$current,$pagesize);
  742. if(isset($db_data['code']) && $db_data['code'] == '1')
  743. {
  744. $db_data['code'] = '0';
  745. return $db_data;
  746. }
  747. //3.处理数据
  748. $tidyData = $this->tidyData($db_data['supplier_array']);
  749. $tidyData['total_page'] = (string)$db_data['total_page'];
  750. return $tidyData;
  751. }
  752. //获取筛选条件
  753. private function getWhere($supplier_name, $is_disabled)
  754. {
  755. $res = array();
  756. if ($is_disabled != -1)
  757. {
  758. $res[] = " is_disabled = " . $is_disabled;
  759. }
  760. if (!empty($supplier_name))
  761. {
  762. $res[] = " supplier_name like '%%" . $supplier_name . "%%' ";
  763. }
  764. if (count($res) > 0) {
  765. $res = " and " . implode(" and ", $res);
  766. }
  767. else {
  768. $res = '';
  769. }
  770. return $res;
  771. }
  772. //获取数据库原始数据
  773. private function getDbData($sql_where, $product_type,$current,$pagesize)
  774. {
  775. if (!empty($product_type) && $product_type != -1)//如果选了采购类型
  776. {
  777. $purchase_sql = "SELECT
  778. supplier_id
  779. FROM
  780. base_supplier_purchase
  781. WHERE
  782. product_type = " . $product_type . " and cancel_flag = 0
  783. GROUP BY
  784. supplier_id";
  785. $supplier_id_array = $this->query($purchase_sql);//获取有该采购类型的所有supplier_id
  786. //如果没有该采购类型的supplier,返回空数组
  787. if (count($supplier_id_array) == 0) {
  788. $json['code'] = '1';
  789. $json['info'] = '没有符合条件的数据';
  790. $json['list'] = array();
  791. $json['count'] = '0';
  792. $json['total_page'] = '0';
  793. return $json;
  794. }
  795. //如果有该采购类型的supplier
  796. foreach ($supplier_id_array as $k => $v) {
  797. $supplier_id_array[$k] = $v['supplier_id'];
  798. }
  799. $sql_where = " and id in(" . implode(",", $supplier_id_array) . ")" . $sql_where . " ";
  800. }
  801. $supplier_sql = "SELECT
  802. id,
  803. supplier_name,
  804. area_id,
  805. is_disabled,
  806. supplier_type
  807. FROM
  808. base_supplier
  809. WHERE
  810. cancel_flag = 0
  811. " . $sql_where . "
  812. AND supplier_type = 187
  813. ORDER BY id DESC
  814. LIMIT " . ($current-1)*$pagesize . "," . $pagesize;
  815. $supplier_array1 = $this->query($supplier_sql);//获取所有数据
  816. if(count($supplier_array1) > 0)
  817. {
  818. foreach($supplier_array1 as $k => $v){
  819. $id_array[$v['id']] = $v['id'];
  820. $supplier_array[$v['id']] = $v;
  821. }
  822. $sql = "select group_concat(product_type) as product_type,supplier_id from base_supplier_purchase where supplier_id in (" . implode(",",$id_array) . ") and cancel_flag = 0 group by supplier_id";
  823. $purchase_array1 = $this->query($sql);
  824. foreach($purchase_array1 as $k => $v)
  825. {
  826. $purchase_array[$v['supplier_id']] = $v['product_type'];
  827. }
  828. foreach($supplier_array as $k => $v)
  829. {
  830. if(isset($purchase_array[$k]))
  831. {
  832. $purchase_array[$k] = explode(",",$purchase_array[$k]);
  833. $purchase_array[$k] = array_unique($purchase_array[$k]);
  834. $purchase_array[$k] = implode(",",$purchase_array[$k]);
  835. $supplier_array[$k]['product_type'] = $purchase_array[$k];
  836. }
  837. else
  838. {
  839. $supplier_array[$k]['product_type'] = '';
  840. }
  841. }
  842. $count_sql = "SELECT
  843. a.id
  844. FROM
  845. base_supplier AS a,
  846. base_supplier_purchase AS b
  847. WHERE
  848. a.id = b.supplier_id
  849. " . $sql_where . "
  850. AND a.cancel_flag = 0
  851. AND b.cancel_flag = 0
  852. GROUP BY
  853. b.supplier_id";
  854. $total_page = $this->query($count_sql);//获取所有数据
  855. $res['supplier_array'] = $supplier_array;
  856. $res['total_page'] = ceil(count($total_page)/$pagesize);
  857. return $res;
  858. }
  859. else
  860. {
  861. $json['code'] = '1';
  862. $json['info'] = '没有符合条件的数据';
  863. $json['list'] = array();
  864. $json['count'] = '0';
  865. $json['total_page'] = '0';
  866. return $json;
  867. }
  868. }
  869. //处理数据
  870. private function tidyData($db_data)
  871. {
  872. $supplier_array = array();
  873. $area_id_array = array();
  874. $type = array(
  875. 0 => '正常',
  876. 1 => '关闭',
  877. 25 => '酒店',
  878. 259 => '车队',
  879. 310 => '巴士',
  880. 311 => '门票'
  881. );
  882. foreach($db_data as $key => $vel)
  883. {
  884. $vel['product_type'] = explode(",",$vel['product_type']);
  885. //获取采购范围的中文
  886. foreach($vel['product_type'] as $k => $v)
  887. {
  888. $vel['product_type'][$k] = $type[$v];
  889. }
  890. $vel['product_type'] = implode(",",$vel['product_type']);
  891. $supplier_array[$vel['id']] = $vel;
  892. //获取所有的area_id
  893. if(!isset($area_id_array[$vel['area_id']]))
  894. {
  895. $area_id_array[$vel['area_id']] = $vel['area_id'];
  896. }
  897. }
  898. //查询area_id的中文
  899. $area_sql = "SELECT
  900. id,area_name
  901. FROM
  902. base_area
  903. WHERE
  904. id in(" . implode(",",$area_id_array) . ")";
  905. $area_id_array = $this->query($area_sql);//获取area中文
  906. foreach($area_id_array as $key => $vel)
  907. {
  908. $area_array[$vel['id']] = $vel['area_name'];
  909. }
  910. foreach($supplier_array as $key => $vel)
  911. {
  912. $supplier_array[$key]['is_disabled'] = $type[$vel['is_disabled']];
  913. $supplier_array[$key]['area_name'] = $area_array[$vel['area_id']];
  914. unset($supplier_array[$key]['area_id']);
  915. }
  916. $supplier_array = array_values($supplier_array);
  917. $json['code'] = '0';
  918. $json['info'] = '返回供销商列表成功';
  919. $json['list'] = $supplier_array;
  920. $json['count'] = (string)count($supplier_array);
  921. return $json;
  922. }
  923. /**
  924. * 修改供应商状态
  925. * @param $param
  926. * @return mixed
  927. */
  928. public function updateStatus($param)
  929. {
  930. $supply_id= isset($param['supply_id']) ? trim($param['supply_id']) : false;
  931. $play = isset($param['play']) ? trim($param['play']) : false;
  932. if(!$supply_id || false === $play)
  933. {
  934. $json['code'] = '2';
  935. $json['info'] = '缺少必要参数';
  936. return $json;
  937. }
  938. $user_id = $this->user_id;
  939. $time = date('Y-m-d H:i:s',time());
  940. $is_disabled = ($play == 'stop')?1:0;
  941. $sql = "UPDATE base_supplier
  942. SET update_user_id = " . $user_id . ",update_time = '" . $time . "',is_disabled = " . $is_disabled . "
  943. WHERE
  944. id in(" . $supply_id . ")";
  945. $result = $this->exec($sql);
  946. if($result)
  947. {
  948. $json['code'] = '0';
  949. $json['info'] = '修改成功';
  950. }
  951. else
  952. {
  953. $json['code'] = '0';
  954. $json['info'] = '数据库原因,修改失败';
  955. }
  956. return $json;
  957. }
  958. }
  959. ?>