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.
 
 
 
 

387 lines
11 KiB

  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: Steven
  5. * Date: 2016/10/13
  6. * Time: 20:36
  7. */
  8. /**
  9. * 项目基类
  10. * Class base
  11. */
  12. require_once __DIR__ . '/DBConfig.class.php'; //引入数据库操作类
  13. require_once __DIR__ . '/Dictionary.class.php'; //引入字典表
  14. require_once __DIR__ . '/message.class.php'; //短信模板类
  15. class base extends DBConfig
  16. {
  17. public $user_id;
  18. function __construct()
  19. {
  20. header("Access-Control-Allow-Origin:*");
  21. date_default_timezone_set('PRC');
  22. //sql注入验证
  23. if (!$this->validatePost()) {
  24. $result['code'] = '102';
  25. $result['info'] = '参数非法';
  26. echo json_encode($result);
  27. exit();
  28. }
  29. //暂时先统一成cookie取值
  30. if (isset($_COOKIE['xm_data'])) {
  31. $xm_data = $_COOKIE['xm_data'];
  32. $data = unserialize($xm_data);
  33. $this->user_id = $data['id'];
  34. } else {
  35. //判断是否登陆:如果没有的话:重定向到login界面
  36. if (!isset($_SESSION)) {
  37. session_start();
  38. }
  39. if (!isset($_SESSION['user_id'])) {
  40. header("Location:http://". CS_DOMAIN. "/");
  41. }
  42. $this->user_id = $_SESSION['user_id'];
  43. }
  44. }
  45. /*
  46. *执行查询操作
  47. */
  48. public function query($sql)
  49. {
  50. $rowset = array();
  51. try {
  52. $dbConn = new DBConfig();
  53. $pdo = $dbConn->conn_waice();
  54. $pdo->beginTransaction();
  55. $result = $pdo->query($sql);
  56. if ($result) {
  57. $rowset = $result->fetchAll(PDO::FETCH_ASSOC);
  58. $result->closeCursor();
  59. $pdo->commit();
  60. }
  61. } catch (PDOException $ex) {
  62. $pdo->rollBack();
  63. }
  64. return $rowset;
  65. }
  66. public function edit($sql)
  67. {
  68. $dbConn = new DBConfig();
  69. $pdo = $dbConn->conn_waice();
  70. $pdo->beginTransaction();
  71. try {
  72. $pdo->exec($sql);
  73. $pdo->commit();
  74. return true;
  75. } catch (PDOException $ex) {
  76. $pdo->rollBack();
  77. return false;
  78. }
  79. }
  80. /**
  81. * 调用执行存储过程
  82. * @param $sql
  83. * @return array|null
  84. */
  85. public function procQuery($sql)
  86. {
  87. $dbConn = new DBConfig();
  88. $pdo = $dbConn->conn_waice();
  89. $result = $pdo->query($sql);
  90. $flag = 1;
  91. $arr = array();
  92. $res = null;
  93. do {
  94. $rowset = $result->fetchAll(PDO::FETCH_ASSOC);
  95. if ($flag > 1) { //说明返回的结果集大于1
  96. if (count($arr) <= 0) {
  97. $arr[] = $res[0];
  98. $res = $arr;
  99. }
  100. $res[] = $rowset;
  101. }
  102. if ($flag == 1) {
  103. $res[0] = $rowset;
  104. }
  105. $flag++;
  106. } while ($result->nextRowset());
  107. $result->closeCursor();
  108. if (isset($res[0][0]['errcode'])) //如果存在errcode的话
  109. {
  110. if ($res[0][0]['errcode'] != 0) //存储过程出错
  111. {
  112. $res1['code'] = $res[0][0]['errcode'];
  113. $res1['info'] = $res[0][0]['errinfo'];
  114. return $res1;
  115. } else {
  116. //将数组的第一个元素删除(删除包含errcode的数组)
  117. $res2['code'] = 0;
  118. $res2['info'] = '执行成功';
  119. $res2['data'] = array_splice($res, 1);
  120. return $res2;
  121. }
  122. } else {
  123. $res3['code'] = 0;
  124. $res3['info'] = '执行成功';
  125. $res3['data'] = $res;
  126. return $res3;
  127. }
  128. }
  129. /**
  130. * 执行更新操作
  131. * @param $sql
  132. * @return int
  133. */
  134. public function exec($sql)
  135. {
  136. try {
  137. $dbConn = new DBConfig();
  138. $pdo = $dbConn->conn_waice();
  139. $pdo->beginTransaction();
  140. $result = $pdo->exec($sql);
  141. $pdo->commit();
  142. } catch (PDOException $ex) {
  143. $pdo->rollBack();
  144. }
  145. return $result;
  146. }
  147. /**
  148. * sql添加
  149. * @return int
  150. */
  151. public function insert($sql)
  152. {
  153. try {
  154. $dbConn = new DBConfig();
  155. $pdo = $dbConn->conn_waice();
  156. $pdo->beginTransaction();
  157. $result = $pdo->exec($sql);
  158. $id = $pdo->lastInsertId();
  159. $pdo->commit();
  160. } catch (PDOException $ex) {
  161. $pdo->rollBack();
  162. }
  163. if ($result) {
  164. $result = $id;
  165. }
  166. return $result;
  167. }
  168. /**
  169. * 获取巴士供应商列表
  170. */
  171. public function getSupply()
  172. {
  173. $extra_sql = '';
  174. $main_supply_id = 0;
  175. if (isset($_COOKIE["user_main_corp"]) && mb_strlen($_COOKIE["user_main_corp"]) > 0 && $_COOKIE["user_main_corp"] > 0 ) {
  176. $extra_sql = ' AND b.main_corp_id IN( ' . $_COOKIE["user_main_corp"] . ' ) ';
  177. $all_main_corp_array = $this->getMainCorpArray();
  178. if( isset($all_main_corp_array[$_COOKIE["user_main_corp"]]) && $all_main_corp_array[$_COOKIE["user_main_corp"]]["supplier_id"] > 0 ) {
  179. $extra_sql = ' AND ( b.main_corp_id IN( ' . $_COOKIE["user_main_corp"] . ' ) OR b.id='.$all_main_corp_array[$_COOKIE["user_main_corp"]]["supplier_id"].' ) ';
  180. $main_supply_id = $all_main_corp_array[$_COOKIE["user_main_corp"]]["supplier_id"];
  181. }
  182. }
  183. $sql = "SELECT
  184. a.supplier_id,
  185. b.supplier_name
  186. FROM
  187. base_supplier_purchase AS a
  188. INNER JOIN base_supplier AS b ON a.supplier_id = b.id
  189. WHERE
  190. a.product_type = 310
  191. AND a.cancel_flag = 0
  192. AND b.cancel_flag = 0
  193. AND b.is_disabled = 0 {$extra_sql}
  194. GROUP BY
  195. a.supplier_id";
  196. $res = $this->query($sql);
  197. if( count($res) > 1 && $main_supply_id != 0 ) {
  198. $res_temp = array();
  199. foreach( $res as $key => $res_tmp ) {
  200. if( $res_tmp["supplier_id"] == $main_supply_id ) {
  201. $res_temp[] = $res_tmp;
  202. unset($res[$key]);
  203. $res2 = array_merge( $res_temp, $res );
  204. $res = $res2;
  205. break;
  206. }
  207. }
  208. }
  209. return $res;
  210. }
  211. /**
  212. * 获取巴士渠道商列表
  213. */
  214. public function getChannel()
  215. {
  216. $extra_sql = '';
  217. if (isset($_COOKIE["user_main_corp"]) && mb_strlen($_COOKIE["user_main_corp"]) > 0 && $_COOKIE["user_main_corp"] > 0 ) {
  218. $extra_sql = ' AND b.main_corp_id IN( ' . $_COOKIE["user_main_corp"] . ' ) ';
  219. }
  220. $sql = "SELECT
  221. a.supplier_id,
  222. b.supplier_name
  223. FROM
  224. base_supplier_sale AS a
  225. INNER JOIN base_supplier AS b ON a.supplier_id = b.id
  226. WHERE
  227. a.parent_type = 310
  228. AND a.cancel_flag = 0
  229. AND b.cancel_flag = 0
  230. AND b.is_disabled = 0 {$extra_sql}
  231. GROUP BY
  232. a.supplier_id";
  233. $res = $this->query($sql);
  234. return $res;
  235. }
  236. /**
  237. * 获取产品线(组合线路)
  238. * @return array|null
  239. */
  240. public function productLine()
  241. {
  242. $sql = "select id,type_name from dict_type where PARENT_ID=323"; //获取产品线
  243. $res = $this->query($sql);
  244. return $res;
  245. }
  246. /**
  247. * 售卖情况时间列表
  248. * @return array
  249. */
  250. public function getTimeType()
  251. {
  252. $time_sql = "SELECT
  253. id,
  254. type_name
  255. FROM
  256. dict_type
  257. WHERE
  258. parent_id = 320";
  259. $res = $this->query($time_sql);//售卖情况时间列表
  260. return $res;
  261. }
  262. /**
  263. * 获取运营主体的数据一览
  264. */
  265. public function getMainCorpArray() {
  266. $sql = " SELECT id,corporation_name,full_name,supplier_id,sale_id FROM base_main_corporation WHERE corp_type = 1 AND cancel_flag = 0 ";
  267. $search_result=$this->query($sql);
  268. $main_corp_array = array();
  269. foreach( $search_result as $result_info ) {
  270. $main_corp_array[$result_info["id"]] = $result_info;
  271. }
  272. return $main_corp_array;
  273. }
  274. /**
  275. * 巴士类型表
  276. * @return array
  277. */
  278. public function getBusType()
  279. {
  280. $bus_type = array(
  281. 0 => array(
  282. 'id' => '255',
  283. 'name' => '直通巴士'
  284. ),
  285. 1 => array(
  286. 'id' => '256',
  287. 'name' => '穿梭巴士'
  288. )
  289. );
  290. $res = $bus_type;
  291. return $res;
  292. }
  293. /**
  294. * 获取座位类型
  295. */
  296. public function getSeat()
  297. {
  298. $sql = "SELECT
  299. id,
  300. type_name
  301. FROM
  302. dict_type
  303. WHERE
  304. parent_id = 71";
  305. $res = $this->query($sql);
  306. return $res;
  307. }
  308. /**
  309. * 获取人群类型
  310. */
  311. public function getPeopleType()
  312. {
  313. $sql = "SELECT
  314. id,
  315. type_name
  316. FROM
  317. dict_type
  318. WHERE
  319. parent_id = 158";
  320. $res = $this->query($sql);
  321. return $res;
  322. }
  323. /*
  324. * 验证post传递的参数是否合法
  325. * 默认提交的全是POST请求
  326. */
  327. private function validatePost()
  328. {
  329. $post = array();
  330. if (isset($_POST) && !empty($_POST)) {
  331. $post = array_merge($post, $_POST);
  332. }
  333. if (isset($_REQUEST) && !empty($_REQUEST)) {
  334. $post = array_merge($post, $_REQUEST);
  335. }
  336. if (isset($_GET) && !empty($_GET)) {
  337. $post = array_merge($post, $_GET);
  338. }
  339. if (!empty($post)) {
  340. if (isset($_POST['error']))
  341. unset($_POST['error']);
  342. foreach (array_keys($post) as $array_key) {
  343. if (!$this->validateString($post[$array_key])) {
  344. return false;
  345. }
  346. }
  347. }
  348. return true;
  349. }
  350. /*
  351. * 验证参数是否合法
  352. * @return 合法:true 非法:false
  353. */
  354. private function validateString($str)
  355. {
  356. $check = 0;
  357. if (is_string($str))
  358. $check = preg_match('/select |insert |update |delete |union|into|load_file|outfile/', $str);
  359. return $check == 0 ? true : false;
  360. }
  361. }