Order.php 3.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. <?php
  2. namespace app\weixin\model;
  3. use think\Model;
  4. class Order
  5. {
  6. /**
  7. * 获取订单列表
  8. * @param $params
  9. * @param int $pageSize
  10. * @param string $field
  11. * @param string $order
  12. * @return mixed
  13. */
  14. public static function getOrderList($params, $pageSize=15, $field='', $order=''){
  15. $status = isset($params['status'])? $params['status'] : [1,2,3,4];
  16. $userId = isset($params['user_id'])? intval($params['user_id']) : 0;
  17. if($userId){
  18. $where['o.user_id'] = $userId;
  19. }
  20. $shopUid = isset($params['shop_uid'])? intval($params['shop_uid']) : 0;
  21. if($shopUid){
  22. $where['o.shop_uid'] = $shopUid;
  23. }
  24. $type = isset($params['type'])? intval($params['type']) : 0;
  25. if($type){
  26. $where['o.type'] = $type;
  27. }
  28. $clusterId = isset($params['cluster_id'])? intval($params['cluster_id']) : -1;
  29. if($clusterId>=0){
  30. $where['o.cluster_id'] = $clusterId;
  31. }
  32. $printType = isset($params['print_type'])? intval($params['print_type']) : 0;
  33. if($printType){
  34. $where['o.print_type'] = $printType;
  35. }
  36. $deviceId = isset($params['device_id'])? intval($params['device_id']) : 0;
  37. if($deviceId){
  38. $where['o.device_id'] = $deviceId;
  39. }
  40. $deviceCode = isset($params['device_code'])? trim($params['device_code']) : '';
  41. if($deviceCode){
  42. $where['o.device_code'] = $deviceCode;
  43. }
  44. $keyword = isset($params['keyword'])? $params['keyword'] : '';
  45. if($keyword){
  46. $where['u.mobile|u.user_nickname'] = ['like',"%{$keyword}%"];
  47. }
  48. $order = $order? $order : 'created_at desc';
  49. $field = $field? $field : 'o.id,o.user_id,o.order_sn,o.cluster_id,o.print_type,o.type,o.cluster_nums,o.status,o.cluster_status,o.created_at,u.user_nickname,u.avatar,d.name as device_name';
  50. $orderConfig = config('config.order');
  51. $closeTime = isset($orderConfig['closeTime'])? intval($orderConfig['closeTime']) : 30;
  52. $dataList = \think\Db::name('orders')->alias('o')
  53. ->join('user u','u.id=o.user_id','left')
  54. ->join('user s','s.id=o.shop_uid','left')
  55. ->join('devices d','d.id=o.device_id','left')
  56. ->where($where)
  57. ->where('o.status','in', $status)
  58. ->where('o.cluster_status','in', [0,1])
  59. // ->where('o.created_at','egt', date('Y-m-d H:i:s',time() - $closeTime*60))
  60. ->where(function($query) use($params){
  61. $limitClusterUser = config('print.limitClusterUser');
  62. $uid = isset($params['uid'])? intval($params['uid']) : 0;
  63. if($limitClusterUser && $uid){
  64. return $query->where('user_id','neq', $uid);
  65. }
  66. })
  67. ->field($field)
  68. ->paginate($pageSize)
  69. ->each(function($item, $k) use($closeTime){
  70. $clusterNums = isset($item['cluster_nums'])? $item['cluster_nums'] : 0;
  71. $clusterId = isset($item['id'])? $item['id'] : 0;
  72. $type = isset($item['type'])? $item['type'] : 0;
  73. $nickname = isset($item['user_nickname'])? $item['user_nickname'] : '';
  74. if($nickname){
  75. $item['user_nickname'] = preg_match("/^[0-9]+$/", $nickname)? formatName($nickname) : $nickname;
  76. }
  77. if($clusterNums && $type == 2){
  78. $hasClusterNums = db('orders')
  79. ->where(['type'=> 2, 'cluster_id'=> $clusterId,'status'=>2])
  80. ->count('id');
  81. $item['remain_cluster_nums'] = max(0,$clusterNums-($hasClusterNums+1));
  82. }
  83. return $item;
  84. });
  85. return $dataList;
  86. }
  87. }