Não pode escolher mais do que 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 
 
 
 

1049 linhas
40 KiB

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