orders.php 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223
  1. <?php
  2. namespace WY\app\controller\derpay;
  3. use WY\app\libs\Controller;
  4. use WY\app\model\Pushorder;
  5. if (!defined('WY_ROOT')) {
  6. exit;
  7. }
  8. class orders extends CheckAdmin
  9. {
  10. public function index()
  11. {
  12. $is_state = $this->req->get('is_state');
  13. $is_ship = $this->req->get('is_ship');
  14. $kw = $this->req->get('kw');
  15. $fdate = $this->req->get('fdate');
  16. $tdate = $this->req->get('tdate');
  17. $fdate = isset($_GET['fdate']) ? $fdate : date('Y-m-d');
  18. $tdate = isset($_GET['tdate']) ? $tdate : date('Y-m-d');
  19. $agentid = $this->req->get('agentid');
  20. $is_ship_agent = $this->req->get('is_ship_agent');
  21. $is_state = isset($_GET['is_state']) ? $is_state : -1;
  22. $is_ship = isset($_GET['is_ship']) ? $is_ship : -1;
  23. $is_ship_agent = isset($_GET['is_ship_agent']) ? $is_ship_agent : -1;
  24. $orderid = $this->req->get('orderid');
  25. $sdorderno = $this->req->get('sdorderno');
  26. $accid = $this->req->get('accid');
  27. $is_checkout = $this->req->get('is_checkout');
  28. $is_checkout = isset($_GET['is_checkout']) ? $is_checkout : -1;
  29. $is_notify = $this->req->get('is_notify');
  30. $is_notify = isset($_GET['is_notify']) ? $is_notify : -1;
  31. $cons = '';
  32. $consOR = '';
  33. $consArr = array();
  34. if ($agentid) {
  35. $cons .= $cons ? ' and ' : '';
  36. $cons .= 'a.agentid=? and a.gprice>?';
  37. $consArr[] = $agentid;
  38. $consArr[] = 0;
  39. }
  40. if ($is_ship_agent >= 0) {
  41. $cons .= $cons ? ' and ' : '';
  42. $cons .= 'a.is_ship_agent=?';
  43. $consArr[] = $is_ship_agent;
  44. }
  45. if ($is_state >= 0) {
  46. $cons .= $cons ? ' and ' : '';
  47. $cons .= 'a.is_state=?';
  48. $consArr[] = $is_state;
  49. }
  50. if ($is_ship >= 0) {
  51. $cons .= $cons ? ' and ' : '';
  52. $cons .= 'a.is_ship=?';
  53. $consArr[] = $is_ship;
  54. }
  55. if ($is_checkout >= 0) {
  56. $cons .= $cons ? ' and ' : '';
  57. $cons .= 'a.is_paytype=?';
  58. $consArr[] = $is_checkout;
  59. }
  60. if ($kw) {
  61. $user = $this->model()->select('id')->from('users')->where(array('fields' => 'username like ?', 'values' => array($kw)))->fetchRow();
  62. if ($user) {
  63. $consOR .= $consOR ? ' or ' : '';
  64. $consOR .= 'a.userid = ?';
  65. $consArr[] = $user['id'];
  66. }
  67. }
  68. if ($kw) {
  69. $consOR .= $consOR ? ' or ' : '';
  70. $consOR .= 'a.userid = ?';
  71. $consArr[] = $kw;
  72. }
  73. if ($consOR) {
  74. $cons .= $cons ? ' and ' : '';
  75. $cons .= '(' . $consOR . ')';
  76. }
  77. if ($is_notify >= 0) {
  78. $cons .= $cons ? ' and ' : '';
  79. $cons .= 'a.is_notify = ?';
  80. $consArr[] = $is_notify;
  81. }
  82. if ($fdate) {
  83. $cons .= $cons ? ' and ' : '';
  84. $cons .= 'a.addtime>=?';
  85. $consArr[] = strtotime($fdate);
  86. }
  87. if ($tdate) {
  88. $cons .= $cons ? ' and ' : '';
  89. $cons .= 'a.addtime<=?';
  90. $consArr[] = strtotime($tdate . ' 23:59:59');
  91. }
  92. if ($orderid) {
  93. $cons .= $cons ? ' and ' : '';
  94. $cons .= 'a.orderid like ?';
  95. $consArr[] = '%' . $orderid . '%';
  96. }
  97. if ($sdorderno) {
  98. $cons .= $cons ? ' and ' : '';
  99. $cons .= 'a.sdorderno like ?';
  100. $consArr[] = '%' . $sdorderno . '%';
  101. }
  102. if ($accid) {
  103. $cons .= $cons ? ' and ' : '';
  104. $cons .= 'a.channelid=?';
  105. $consArr[] = $accid;
  106. }
  107. $page = $this->req->get('p');
  108. $page = $page ? $page : 1;
  109. $pagesize = 20;
  110. $totalsize = $this->model()->select()->from('orders a')->where(array('fields' => $cons, 'values' => $consArr))->count();
  111. $lists = $total_count = array();
  112. $total_orders = $total_money = $total_success_orders = $total_success_money = $total_income_user = $total_income_dl = $total_income_pt = 0;
  113. if ($totalsize) {
  114. $totalpage = ceil($totalsize / $pagesize);
  115. $page = $page > $totalpage ? $totalpage : $page;
  116. $offset = ($page - 1) * $pagesize;
  117. $lists = $this->model()->select('a.*,b.remark')->from('orders a')->left('orderinfo b')->on('b.id=a.orderinfoid')->join()->offset($offset)->limit($pagesize)->where(array('fields' => $cons, 'values' => $consArr))->orderby('a.id desc')->fetchAll();
  118. $total_orders = $this->model()->from('orders a')->where(array('fields' => $cons, 'values' => $consArr))->count();
  119. $total_money = $this->model()->select(array('money' => 'a.total_fee'))->from('orders a')->where(array('fields' => $cons, 'values' => $consArr))->sum();
  120. $cons2 = $cons . ' and a.is_state=?';
  121. $consArr2 = array_merge($consArr, array(1));
  122. $total_success_orders = $this->model()->from('orders a')->where(array('fields' => $cons2, 'values' => $consArr2))->count();
  123. $total_success_money = $this->model()->select(array('money' => 'a.realmoney'))->from('orders a')->where(array('fields' => $cons2, 'values' => $consArr2))->sum();
  124. $total_income_user = $this->model()->select(array('money' => 'a.realmoney*a.uprice'))->from('orders a')->where(array('fields' => $cons2, 'values' => $consArr2))->sum();
  125. $total_income_pt = $this->model()->select(array('money' => '(a.wprice-IF(a.gprice>0,a.gprice,a.uprice))*realmoney'))->from('orders a')->where(array('fields' => $cons2, 'values' => $consArr2))->sum();
  126. }
  127. $pagelist = $this->page->put(array('page' => $page, 'pagesize' => $pagesize, 'totalsize' => $totalsize, 'url' => '?is_state=' . $is_state . '&is_checkout=' . $is_checkout . '&is_notify=' . $is_notify . '&kw=' . $kw . '&orderid=' . $orderid . '&sdorderno=' . $sdorderno . '&accid=' . $accid . '&fdate=' . $fdate . '&tdate=' . $tdate . '&p='));
  128. $acc = $this->model()->select()->from('acc')->fetchAll();
  129. $data = array('title' => '订单列表', 'lists' => $lists, 'count' => array('total_orders' => $total_orders, 'total_money' => $total_money['money'], 'success_orders' => $total_success_orders, 'success_money' => $total_success_money['money'], 'income_user' => $total_income_user['money'], 'income_pt' => $total_income_pt['money']), 'pagelist' => $pagelist, 'search' => array('is_state' => $is_state, 'kw' => $kw, 'fdate' => $fdate, 'tdate' => $tdate, 'orderid' => $orderid, 'sdorderno' => $sdorderno, 'accid' => $accid, 'is_checkout' => $is_checkout, 'is_notify' => $is_notify), 'acc' => $acc);
  130. $this->put('orders.php', $data);
  131. }
  132. public function del()
  133. {
  134. $id = $this->req->get('id');
  135. if ($id) {
  136. $orders = $this->model()->select('orderinfoid')->from('orders')->where(array('fields' => 'id=?', 'values' => array($id)))->fetchRow();
  137. if ($this->model()->from('orders')->where(array('fields' => 'id=?', 'values' => array($id)))->delete()) {
  138. $this->model()->from('orderinfo')->where(array('fields' => 'id=?', 'values' => array($orders['orderinfoid'])))->delete();
  139. $this->model()->from('ordernotify')->where(array('fields' => 'orid=?', 'values' => array($id)))->delete();
  140. echo json_encode(array('status' => 1));
  141. exit;
  142. }
  143. }
  144. echo json_encode(array('status' => 0));
  145. exit;
  146. }
  147. public function getorderinfo()
  148. {
  149. $id = isset($this->action[3]) ? intval($this->action[3]) : 0;
  150. $orders = $this->model()->select()->from('orders')->where(array('fields' => 'id=?', 'values' => array($id)))->fetchRow();
  151. $orderinfo = $this->model()->select()->from('orderinfo')->where(array('fields' => 'id=?', 'values' => array($orders['orderinfoid'])))->fetchRow();
  152. $ordernotify = $this->model()->select()->from('ordernotify')->where(array('fields' => 'orid=?', 'values' => array($id)))->orderby('id desc')->fetchRow();
  153. $data = array('orders' => $orders, 'orderinfo' => $orderinfo, 'ordernotify' => $ordernotify);
  154. $this->put('getorderinfo.php', $data);
  155. }
  156. public function notify()
  157. {
  158. $orderid = $this->req->post('orderid');
  159. $push = new Pushorder($orderid);
  160. $push->notify();
  161. $orders = $this->model()->select('id')->from('orders')->where(array('fields' => 'orderid=?', 'values' => array($orderid)))->fetchRow();
  162. $orderinfo = $this->model()->select('retmsg')->from('ordernotify')->where(array('fields' => 'orid=?', 'values' => array($orders['id'])))->fetchRow();
  163. echo $orderinfo['retmsg'];
  164. }
  165. public function getnotify()
  166. {
  167. $str = '';
  168. $data = $this->model()->select('a.*,b.orderid')->from('ordernotify a')->left('orders b')->on('b.id=a.orid')->join()->orderby('a.id desc')->limit(10)->fetchAll();
  169. if ($data) {
  170. foreach ($data as $key => $val) {
  171. $retmsg = json_decode($val['retmsg'], true);
  172. $str .= '<tr><td>' . date('Y-m-d H:i:s', $val['addtime']) . '</td><td><a href="' . $this->dir . 'orders?orderid=' . $val['orderid'] . '" target="_blank">' . $val['orderid'] . '</a></td><td>' . $retmsg['code'] . '</td><td>' . $retmsg['content'] . '</td><td>' . $val['times'] . '</td><td><a href="javascript:;" onclick="pushOrder(\'' . $val['orderid'] . '\')" data-toggle="tooltip" title="通知"><span class="glyphicon glyphicon-refresh"></span></a></td></tr>';
  173. }
  174. } else {
  175. $str = '<tr><td colspan="5">no data.</td></tr>';
  176. }
  177. echo $str;
  178. }
  179. public function getnotifyinfo()
  180. {
  181. $id = isset($this->action[3]) ? intval($this->action[3]) : 0;
  182. $orders = $this->model()->select()->from('orders')->where(array('fields' => 'id=?', 'values' => array($id)))->fetchRow();
  183. $orderinfo = $this->model()->select()->from('orderinfo')->where(array('fields' => 'id=?', 'values' => array($orders['orderinfoid'])))->fetchRow();
  184. $ordernotify = $this->model()->select()->from('ordernotify')->where(array('fields' => 'orid=?', 'values' => array($id)))->fetchRow();
  185. $push = new Pushorder($orders['orderid']);
  186. $params = $push->getParams($orderinfo);
  187. $params = $push->saltData($params);
  188. $str = '';
  189. foreach ($params as $key => $val) {
  190. $str .= $str ? '&' : '';
  191. $str .= $key . '=' . $val;
  192. }
  193. $this->put('getnotifyinfo.php', array('orders' => $orders, 'orderinfo' => $orderinfo, 'ordernotify' => $ordernotify, 'params' => $str));
  194. }
  195. public function freeze()
  196. {
  197. $id = $this->req->get('id');
  198. $where = array('fields' => 'id=? and is_state>? and is_ship=?', 'values' => array($id, 0, 0));
  199. if ($orders = $this->model()->select('freeze')->from('orders')->where($where)->fetchRow()) {
  200. $freeze = $orders['freeze'] ? 0 : 1;
  201. if ($freeze) {
  202. $title = '还原订单';
  203. $msg = '还';
  204. $stateName = '冻结';
  205. $removeClass = 'label-success';
  206. $addClass = 'label-danger';
  207. } else {
  208. $title = '扣除订单';
  209. $msg = '扣';
  210. $stateName = '已付';
  211. $removeClass = 'label-danger';
  212. $addClass = 'label-success';
  213. }
  214. $data = array('freeze' => $freeze, 'is_state' => $freeze ? 2 : 1);
  215. if ($this->model()->from('orders')->updateSet($data)->where($where)->update()) {
  216. echo json_encode(array('status' => 1, 'title' => $title, 'msg' => $msg, 'stateName' => $stateName, 'removeClass' => $removeClass, 'addClass' => $addClass));
  217. exit;
  218. }
  219. }
  220. echo json_encode(array('status' => 0, 'msg' => '操作失败'));
  221. }
  222. }