| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- <?php
- namespace app\weixin\model;
- use think\Model;
- class Order
- {
- /**
- * 获取订单列表
- * @param $params
- * @param int $pageSize
- * @param string $field
- * @param string $order
- * @return mixed
- */
- public static function getOrderList($params, $pageSize=15, $field='', $order=''){
- $status = isset($params['status'])? $params['status'] : [1,2,3,4];
- $userId = isset($params['user_id'])? intval($params['user_id']) : 0;
- if($userId){
- $where['o.user_id'] = $userId;
- }
- $shopUid = isset($params['shop_uid'])? intval($params['shop_uid']) : 0;
- if($shopUid){
- $where['o.shop_uid'] = $shopUid;
- }
- $type = isset($params['type'])? intval($params['type']) : 0;
- if($type){
- $where['o.type'] = $type;
- }
- $clusterId = isset($params['cluster_id'])? intval($params['cluster_id']) : -1;
- if($clusterId>=0){
- $where['o.cluster_id'] = $clusterId;
- }
- $printType = isset($params['print_type'])? intval($params['print_type']) : 0;
- if($printType){
- $where['o.print_type'] = $printType;
- }
- $deviceId = isset($params['device_id'])? intval($params['device_id']) : 0;
- if($deviceId){
- $where['o.device_id'] = $deviceId;
- }
- $deviceCode = isset($params['device_code'])? trim($params['device_code']) : '';
- if($deviceCode){
- $where['o.device_code'] = $deviceCode;
- }
- $keyword = isset($params['keyword'])? $params['keyword'] : '';
- if($keyword){
- $where['u.mobile|u.user_nickname'] = ['like',"%{$keyword}%"];
- }
- $order = $order? $order : 'created_at desc';
- $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';
- $orderConfig = config('config.order');
- $closeTime = isset($orderConfig['closeTime'])? intval($orderConfig['closeTime']) : 30;
- $dataList = \think\Db::name('orders')->alias('o')
- ->join('user u','u.id=o.user_id','left')
- ->join('user s','s.id=o.shop_uid','left')
- ->join('devices d','d.id=o.device_id','left')
- ->where($where)
- ->where('o.status','in', $status)
- ->where('o.cluster_status','in', [0,1])
- // ->where('o.created_at','egt', date('Y-m-d H:i:s',time() - $closeTime*60))
- ->where(function($query) use($params){
- $limitClusterUser = config('print.limitClusterUser');
- $uid = isset($params['uid'])? intval($params['uid']) : 0;
- if($limitClusterUser && $uid){
- return $query->where('user_id','neq', $uid);
- }
- })
- ->field($field)
- ->paginate($pageSize)
- ->each(function($item, $k) use($closeTime){
- $clusterNums = isset($item['cluster_nums'])? $item['cluster_nums'] : 0;
- $clusterId = isset($item['id'])? $item['id'] : 0;
- $type = isset($item['type'])? $item['type'] : 0;
- $nickname = isset($item['user_nickname'])? $item['user_nickname'] : '';
- if($nickname){
- $item['user_nickname'] = preg_match("/^[0-9]+$/", $nickname)? formatName($nickname) : $nickname;
- }
- if($clusterNums && $type == 2){
- $hasClusterNums = db('orders')
- ->where(['type'=> 2, 'cluster_id'=> $clusterId,'status'=>2])
- ->count('id');
- $item['remain_cluster_nums'] = max(0,$clusterNums-($hasClusterNums+1));
- }
- return $item;
- });
- return $dataList;
- }
- }
|