Order.php 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. <?php
  2. /**
  3. * @copyright Copyright (c) 2017 https://www.sapixx.com All rights reserved.
  4. * @license Licensed (http://www.apache.org/licenses/LICENSE-2.0).
  5. * @author pillar<ltmn@qq.com>
  6. * 订单管理
  7. */
  8. namespace app\green\controller;
  9. use think\facade\Request;
  10. use app\green\model\GreenOrder;
  11. use app\green\model\OrderCache;
  12. class Order extends Common{
  13. public function initialize() {
  14. parent::initialize();
  15. $this->assign('pathMaps',[['name'=>'订单管理','url'=>url("green/Order/index")]]);
  16. }
  17. /**
  18. * 订单库
  19. * @return void
  20. */
  21. protected function orderList(){
  22. $starttime = Request::param('starttime');
  23. $endtime = Request::param('endtime');
  24. if(!empty($starttime) && !empty($endtime)){
  25. $starttime = strtotime(date('Y-m-d 00:00:00',strtotime($starttime)));
  26. $endtime = strtotime(date('Y-m-d 23:59:59',strtotime($endtime)));
  27. if($starttime > $endtime){
  28. $this->error('开始日期不能大于结束日期');
  29. }
  30. if($endtime-$starttime >= 518401){
  31. $this->error('只支持连续6天的查找');
  32. }
  33. }
  34. $view['keyword'] = Request::param('keyword');
  35. $view['status'] = Request::param('status/d',0);
  36. $path[] = ['name'=>'订单管理','url'=>url("green/Order/index")];
  37. $condition = [];
  38. if(!empty($starttime) && !empty($endtime)){
  39. $condition[] = ['create_time','>=',$starttime];
  40. $condition[] = ['create_time','<=',$endtime];
  41. }
  42. if(!empty($view['keyword'])){
  43. $condition = [['order_no','=',trim($view['keyword'])]];
  44. }
  45. $condition[] = ['member_miniapp_id', '=', $this->member_miniapp_id];
  46. $view['count'] = GreenOrder::where($condition)->count();
  47. switch ($view['status']) {
  48. case 1:
  49. $condition[] = ['paid_at','=',1];
  50. $condition[] = ['express_status','=',0];
  51. $condition[] = ['is_del','=',0];
  52. $path[] = ['name'=>'待发货','url'=>'javascript:;'];
  53. break;
  54. case 2:
  55. $condition[] = ['paid_at','=',1];
  56. $condition[] = ['express_status','=',1];
  57. $condition[] = ['is_del','=',0];
  58. $path[] = ['name'=>'已发货','url'=>'javascript:;'];
  59. break;
  60. case 3:
  61. $condition[] = ['is_del','=',0];
  62. $condition[] = ['paid_at','=',0];
  63. $path[] = ['name'=>'已发货','url'=>'javascript:;'];
  64. break;
  65. case 4:
  66. $condition[] = ['is_del','=',1];
  67. $path[] = ['name'=>'回收站','url'=>'javascript:;'];
  68. break;
  69. default:
  70. $condition[] = ['is_del','=',0];
  71. break;
  72. }
  73. $view['order'] = GreenOrder::where($condition)->order('id desc')->paginate(10);
  74. $view['starttime'] = empty($starttime) ? time() : $starttime;
  75. $view['endtime'] = empty($endtime) ? time() : $endtime;;
  76. $view['pathMaps'] = $path;
  77. return $view;
  78. }
  79. /**
  80. * 订单列表
  81. */
  82. public function index(){
  83. return view()->assign(self::orderList());
  84. }
  85. /**
  86. * 订单预览
  87. */
  88. public function view(){
  89. $view['order'] = GreenOrder::getOrder($this->request->param('order_no'),0,0);
  90. return view()->assign($view);
  91. }
  92. /**
  93. * 发货
  94. */
  95. public function sendgoods(){
  96. if(request()->isAjax()){
  97. $data = [
  98. 'order_no' => Request::param('order_no/s'),
  99. 'express_company' => Request::param('express_company/s'),
  100. 'express_no' => Request::param('express_no/s'),
  101. ];
  102. $validate = $this->validate($data,'Order.sendgoods');
  103. if(true !== $validate){
  104. return enjson(0,$validate);
  105. }
  106. //判断当前商品是否完成
  107. $result = GreenOrder::where(['paid_at' => 1,'order_no' => $data['order_no']])->find();
  108. if(empty($result)){
  109. return json(['code'=>0,'msg'=>'商品没有满足发货条件']);
  110. }
  111. $data['express_company'] = $data['express_company'];
  112. $data['express_no'] = $data['express_no'];
  113. $data['express_status'] = 1;
  114. $data['express_starttime'] = time();
  115. $rel = GreenOrder::where(['id' => $result->id])->update($data);
  116. if($rel){
  117. return enjson(200,'操作成功',['url' => url('green/Order/index',['order_no' => $data['order_no']])]);
  118. }
  119. return enjson(0);
  120. }else{
  121. $order_no = Request::param('order_no/s');
  122. $view['order'] = GreenOrder::getOrder($order_no,0,0);
  123. if(empty($view['order'])){
  124. $this->error("404 NOT FOUND");
  125. }
  126. $view['order_no'] = $order_no;
  127. return view()->assign($view);
  128. }
  129. }
  130. /**
  131. * 后台人工修改订单为已发货
  132. */
  133. public function paid(){
  134. $order_no = Request::param('order_no');
  135. $result = GreenOrder::where(['paid_at' => 0,'order_no' => $order_no])->update(['paid_at' => 1,'payment_id' => 0,'order_starttime' => time(),'paid_no' => 'GM'.order_no()]);
  136. if($result){
  137. return enjson(200,'操作成功',['url' => url('green/Order/index',['order_no' => $order_no,'status' => Request::param('status/d',0)])]);
  138. }
  139. return enjson(0);
  140. }
  141. /**
  142. * 删除
  143. */
  144. public function delete($order_no){
  145. $rel = GreenOrder::where(['order_no' => $order_no])->find();
  146. if($rel){
  147. if($rel['is_del'] == 0){
  148. $result = GreenOrder::update(['is_del'=>1],['order_no' => $order_no]);
  149. }else{
  150. $result = GreenOrder::where(['order_no' => $order_no])->delete();
  151. }
  152. if($result){
  153. return enjson(200,'操作成功',['url' => url('green/Order/index',['status' => Request::param('status/d',0)])]);
  154. }
  155. }
  156. return enjson(0);
  157. }
  158. /**
  159. * 清空回收站
  160. */
  161. public function alldelete(){
  162. $rel = GreenOrder::where(['is_del'=>1])->select();
  163. if($rel){
  164. foreach ($rel as $value) {
  165. GreenOrder::where(['order_no' => $value['order_no']])->delete();
  166. }
  167. return enjson(200,'操作成功',['url' => url('green/Order/index',['status' => Request::param('status/d',0)])]);
  168. }
  169. return enjson(0);
  170. }
  171. }