BanzuiOrderController.php 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Jobs\TongBuStatusJob;
  4. use App\Models\Activity;
  5. use App\Models\BanzuiOrder;
  6. use App\Models\BanzuiOrderDetail;
  7. use App\Models\Goods;
  8. use App\Models\OrderDetail;
  9. use App\Models\OrderRemark;
  10. use App\Models\User;
  11. use Exception;
  12. use Illuminate\Http\Request;
  13. use Illuminate\Support\Facades\Auth;
  14. use Illuminate\Support\Facades\DB;
  15. use Illuminate\Support\Facades\Log;
  16. class BanzuiOrderController extends Controller
  17. {
  18. public function order_list(Request $request)
  19. {
  20. $input = $request->all();
  21. $page_index = $input['page_index'];
  22. $page_size = $input['page_size'];
  23. $num = ($page_index - 1) * $page_size;
  24. $order_no = $input['order_no'];
  25. $start_time = $input['start_time'];
  26. $end_time = $input['end_time'];
  27. $search_name = $input['search_name'];
  28. // $activity_id = $input['activity_id'];
  29. $data = BanzuiOrder::with(['get_user'=>function($query){
  30. $query->with(['warea:id,admin_name'])->select('id','nickname','name','realname','warea_id');
  31. }])
  32. ->with(['get_address:id,username,mobile,address,province,city,town'])
  33. ->with(['get_store:name,id'])
  34. ->with(['belong_user:nickname,id,mobile']);
  35. $admin=Auth::user();
  36. if ($request->has('order_status')) {
  37. $order_status = $input['order_status'];
  38. } else {
  39. $order_status = [];
  40. }
  41. if ($order_status || $order_status == 0) {
  42. if ('-1' == $order_status) {
  43. $data->whereIn('is_deleted', [0, 1]);
  44. } elseif ($order_status == 5) {
  45. $data->where('is_deleted', 1);
  46. } elseif ($order_status == 0) {
  47. $data->where('status', $order_status)->where('is_deleted', 0);
  48. } elseif ($order_status == 1) {
  49. $data->where('status', $order_status)->where('is_deleted', 0);
  50. } elseif ($order_status == 2) {
  51. $data->where('status', $order_status)->where('is_deleted', 0);
  52. } elseif ($order_status == 3) {
  53. $data->where('status', $order_status)->where('is_deleted', 0);
  54. } elseif ($order_status == 4) {
  55. $data->where('status', $order_status)->where('is_deleted', 0);
  56. } elseif ($order_status == 6) {
  57. $data->whereIn('pay_status', [0, 1])->where('is_deleted', 0);
  58. }
  59. }
  60. $num_1=BanzuiOrder::whereIn('is_deleted',[0,1])->count();
  61. $num_3=BanzuiOrder::where('is_deleted',0)->where('status', 0)->count();
  62. $num_4=BanzuiOrder::where('is_deleted',0)->where('status', 1)->count();
  63. $num_5=BanzuiOrder::where('is_deleted',0)->where('status', 2)->count();
  64. $num_6=BanzuiOrder::where('is_deleted',0)->where('status', 3)->count();
  65. $num_7=BanzuiOrder::where('is_deleted',0)->where('status', 4)->count();
  66. $num_8=BanzuiOrder::where('is_deleted',1)->count();
  67. $num_2=BanzuiOrder::whereIn('pay_status', [0, 1])->where('is_deleted', 0)->count();
  68. if ($order_no) {
  69. $data->where('order_num','like', '%'.$order_no.'%');
  70. }
  71. if ($search_name){
  72. $user_search=function ($q)use($search_name){
  73. $q->where('nickname','like',"%$search_name%")
  74. // ->orwhere('nickname','like',"%$search_name%")
  75. ->orwhere('mobile','like',"%$search_name%");
  76. };
  77. $ids=User::where($user_search)->pluck('id');
  78. $data->whereIn('user_id',$ids);
  79. // $data->where($user_search);
  80. }
  81. if ($start_time && $end_time && empty($activity_id)) {
  82. $data->whereBetween('created_at', [$start_time, $end_time]);
  83. }
  84. // if($activity_id){
  85. // $data->where('activity_id',$activity_id);
  86. // }
  87. $count = $data->count();
  88. if ($order_status==-1){
  89. $num_1=$count;
  90. }elseif($order_status==0){
  91. $num_3=$count;
  92. }elseif($order_status==1){
  93. $num_4=$count;
  94. }elseif($order_status==2){
  95. $num_5=$count;
  96. }elseif($order_status==3){
  97. $num_6=$count;
  98. }elseif($order_status==4){
  99. $num_7=$count;
  100. }elseif($order_status==5){
  101. $num_8=$count;
  102. }elseif($order_status==6){
  103. $num_2=$count;
  104. }
  105. if ($count <= 0) {
  106. $this->error('450001', '暂无信息');
  107. }
  108. $list = $data->orderBy('id', 'desc')->skip($num)->take($page_size)->get();
  109. foreach ($list as $key => $val) {
  110. $list[$key]['remark'] = $this->getOrderRemark($val['id']);
  111. if ($val['is_deleted']==1){
  112. if ($val['remark']==''){
  113. $list[$key]['remark']=$val['destroy_cause'];
  114. }
  115. }
  116. if (!empty($val->track_number)) {
  117. $list[$key]['express'] = $this->express($val->track_company, $val->track_number);
  118. }
  119. $good_unit=BanzuiOrderDetail::where('order_id',$val['id'])->select('goods_unit',DB::raw('SUM(num) as total'))->groupBy('goods_unit')->pluck('total','goods_unit');
  120. $num_hard=0;
  121. if (isset($good_unit['盒'])){
  122. $num_hard=ceil($good_unit['盒']/12);
  123. }
  124. $num_old=0;
  125. if (isset($good_unit['件'])){
  126. $num_old=ceil($good_unit['件']/6);
  127. }
  128. // $pei=$this->DelNum($val['id']);
  129. $pei=[];
  130. $x_num=0;
  131. $list[$key]['x_arr']=[
  132. 'peijian'=>[],
  133. 'peijians'=>[],
  134. 'good'=>['hard'=>$num_hard,'other'=>$num_old],
  135. 'num'=>$x_num
  136. ];
  137. }
  138. $all=[
  139. 'total'=>$count,
  140. 'num_1'=>$num_1,
  141. 'num_2'=>$num_2,
  142. 'num_3'=>$num_3,
  143. 'num_4'=>$num_4,
  144. 'num_5'=>$num_5,
  145. 'num_6'=>$num_6,
  146. 'num_7'=>$num_7,
  147. 'num_8'=>$num_8,
  148. 'list'=>$list,
  149. ];
  150. return $this->success($all,'获取数据成功');
  151. }
  152. //获取订单备注
  153. private function getOrderRemark($order_id)
  154. {
  155. $remark = OrderRemark::where('order_id', $order_id)
  156. ->select('remark', 'name')->get();
  157. $str_remark = '';
  158. if ($remark) {
  159. foreach ($remark as $k => $v) {
  160. $str_remark .= '【' . $v->remark . '/---/' . $v->name . '】';
  161. }
  162. }
  163. return $str_remark;
  164. }
  165. public function order_detail(Request $request)
  166. {
  167. $order_num = $request->order_num;
  168. $order = BanzuiOrder::where('order_num', $order_num)->with(['get_order_log'=>function($q){
  169. $q->orderByDesc('created_at');
  170. }, 'get_address', 'get_order_remark', 'get_user', 'get_order_gift'])->with(['belong_user:nickname,id,mobile,realname,uuid'])->first()->toArray();
  171. $order_detail = BanzuiOrderDetail::where('order_id', $order['id'])->orderByDesc('created_at')->get();
  172. $data = [];
  173. foreach ($order_detail as $k => $v) {
  174. $good = Goods::find($v->goods_id);
  175. $data['goods_detail'][$k]['name'] = $good->name;
  176. $data['goods_detail'][$k]['main_img'] = $good->main_img;
  177. $data['goods_detail'][$k]['size'] = $good->size;
  178. $data['goods_detail'][$k]['unit'] = $good->unit;
  179. $data['goods_detail'][$k]['money'] = $v->money;
  180. $data['goods_detail'][$k]['num'] = $v->num;
  181. $data['goods_detail'][$k]['id'] = $v->goods_id;
  182. $data['goods_detail'][$k]['detail_id'] = $v->id;
  183. $data['goods_detail'][$k]['goods_price'] = $v->goods_price;
  184. $data['goods_detail'][$k]['remark'] = $v->remark == null ? '' : $v->remark;
  185. }
  186. $order['get_user']['mobile']=$order['get_user']['uuid'];
  187. $order['belong_user']['mobile']=$order['belong_user']['uuid'];
  188. $all = array_merge($order, $data);
  189. return $this->success($all);
  190. }
  191. public function many_audit_orderbanzui(Request $request)
  192. {
  193. $input = $request->all();
  194. $status = $input['status'];//订单状态 0待订单审核 1财务待审核 2代发货审核 3待收货(dingshi)4完成
  195. $data = $input['data'];
  196. $name = Auth::user()->name;
  197. $activity=Activity::where('is_ing',1)->first();
  198. DB::beginTransaction();
  199. try {
  200. if ($status == 0) {
  201. foreach ($data as $key => $val) {
  202. $order = BanzuiOrder::where('id', $val)->first();
  203. if ($order->status == 0) {
  204. BanzuiOrder::order_audit($val, $order, $name);
  205. }
  206. }
  207. // TongBuStatusJob::dispatch($data);
  208. } elseif ($status == 1) {
  209. foreach ($data as $key => $val) {
  210. $order = BanzuiOrder::where('id', $val)->first();
  211. if ($order->status == 1) {
  212. BanzuiOrder::financial_audit($val, $order, $name);
  213. }
  214. }
  215. } elseif ($status == 2) {
  216. foreach ($data as $key => $val) {
  217. $order = BanzuiOrder::where('id', $val)->first();
  218. if ($order->status == 2) {
  219. BanzuiOrder::send_audit($val, $order, $name);
  220. }
  221. }
  222. } else {
  223. throw new Exception("订单状态有误!");
  224. }
  225. DB::commit();
  226. return $this->success([]);
  227. } catch (Exception $e) {
  228. DB::rollback();
  229. return $this->error('450001', $e->getMessage());
  230. }
  231. }
  232. }