insertCabinet($url,$alias,$count,$number,$login_key); if($flag['code'] != 1){ return json(json_error_exception('1006',$flag['msg'])); } $this->action_log(); json_success([]); } public function OpenBox() { $params['id'] = $this->getid(); $cabinet_code = input('param.cabinet_number'); $box_number = input('param.box_number'); $box_position_list[] = $box_number; $params['box_position_list'] = $box_position_list; $params['delay_time'] = 0; $cabinet = $this->get_cabinet($cabinet_code); if($cabinet == false){ return json(json_error_exception('1008')); } $params['ret_queue'] = 'RET' . session_id(); $params['req_url'] = $cabinet['req_url']; $params['key'] = $cabinet['login_key']; $params['cabinet_code'] = $cabinet['cabinet_code']; $params['method'] = 'OpenBoxR'; $result = $this->proc_request(self::queue_name,'OpenBox',$params); if($result == false) { json_error(2000); } else { $this->action_log(); json_success($result['data']); } } public function LockCabinet() { $params['id'] = $this->getid(); $cabinet_code = input('param.cabinet_number'); $cabinet = $this->get_cabinet($cabinet_code); $params['delay_time'] = 0; if($cabinet == false){ return json(json_error_exception('1008')); } $params['ret_queue'] = 'RET' . session_id(); $params['req_url'] = $cabinet['req_url']; $params['key'] = $cabinet['login_key']; $params['cabinet_code'] = $cabinet['cabinet_code']; $params['method'] = 'LockCabinetR'; $result = $this->proc_request(self::queue_name,'LockCabinet',$params); if($result == false) { json_error(2000); } else { $this->action_log(); json_success($result); } } public function UnLockCabinet() { $params['id'] = $this->getid(); $cabinet_code = input('param.cabinet_number'); $cabinet = $this->get_cabinet($cabinet_code); $params['delay_time'] = 0; if($cabinet == false){ return json(json_error_exception('1008')); } $params['ret_queue'] = 'RET' . session_id(); $params['req_url'] = $cabinet['req_url']; $params['key'] = $cabinet['login_key']; $params['cabinet_code'] = $cabinet['cabinet_code']; $params['method'] = 'UnLockCabinetR'; $result = $this->proc_request(self::queue_name,'UnLockCabinet',$params); if($result == false) { json_error(2000); } else { json_success($result); } } public function ReleaseAlarm() { $params['id'] = $this->getid(); $cabinet_code = input('param.cabinet_number'); $params['delay_time'] = 0; $cabinet = $this->get_cabinet($cabinet_code); if($cabinet == false){ return json(json_error_exception('1008')); } $params['ret_queue'] = 'RET' . session_id(); $params['req_url'] = $cabinet['req_url']; $params['key'] = $cabinet['login_key']; $params['cabinet_code'] = $cabinet['cabinet_code']; $params['method'] = 'ReleaseAlarmR'; $result = $this->proc_request(self::queue_name,'ReleaseAlarm',$params); if($result == false) { json_error(2000); } else { json_success($result); } } public function Reboot() { $params['id'] = $this->getid(); $cabinet_code = input('param.cabinet_number'); $params['delay_time'] = 0; $cabinet = $this->get_cabinet($cabinet_code); if($cabinet == false){ return json(json_error_exception('1008')); } $params['ret_queue'] = 'RET' . session_id(); $params['req_url'] = $cabinet['req_url']; $params['key'] = $cabinet['login_key']; $params['cabinet_code'] = $cabinet['cabinet_code']; $params['method'] = 'RebootR'; $result = $this->proc_request(self::queue_name,'Reboot',$params); if($result == false) { json_error(2000); } else { json_success($result); } } public function QueryState() { $params['id'] = $this->getid(); $cabinet_code = input('param.cabinet_number'); $params['delay_time'] = 0; $cabinet = $this->get_cabinet($cabinet_code); if($cabinet == false){ return json(json_error_exception('1008')); } $params['ret_queue'] = 'RET' . session_id(); $params['req_url'] = $cabinet['req_url']; $params['key'] = $cabinet['login_key']; $params['cabinet_code'] = $cabinet['cabinet_code']; $params['method'] = 'RebootR'; $result = $this->proc_request(self::queue_name,'QueryState',$params); if($result == false) { json_error(2000); } else { json_success($result); } } public function CabinetList(){ $param = input('param.'); $CabinetModel = new CabinetModel(); $selectResult = $CabinetModel->getCabinetsByWhere(); $cabinet_status = ['1' => '运行中' , '2' => '已锁定']; // 拼装参数 foreach($selectResult as $key=>$vo){ $selectResult[$key]['status_text'] = $cabinet_status[$vo['cabinet_status']]; } $return['total'] = $CabinetModel->getAllCabinets(); //总数量 $return['rows'] = $selectResult; $this->action_log(); json_success($return); } public function BoxList(){ $cabinet_number = input('param.cabinet_number'); if(empty($cabinet_number)){ json_error(1007 , '柜子号码不能为空'); } $BoxModel = new BoxModel(); $where['sc_box.cabinet_number'] = $cabinet_number; $selectResult = $BoxModel->getBoxsByWhere($where); $box_status = ['打开','关闭']; // 拼装参数 foreach($selectResult as $key=>$vo){ $selectResult[$key]['status_text'] = $box_status[$vo['box_status']]; } $return['total'] = $BoxModel->getAllCounts(); //总数量 $return['rows'] = $selectResult; $this->action_log(); json_success($return); } public function BoxActionList(){ $param = input('param.'); if(empty($param['cabinet_number']) || empty($param['box_number'])){ json_error(1007 , '柜子号码或箱子号码不能为空'); } $where['cabinet_number'] = $param['cabinet_number']; $where['box_number'] = $param['box_number']; $limit = isset($param['pageSize']) ? $param['pageSize'] : 10; $param['pageNumber'] = isset($param['pageNumber']) ? $param['pageNumber'] : 1; $offset = ($param['pageNumber'] - 1) * $limit; $BoxActionModel = new BoxActionModel(); $selectResult = $BoxActionModel->getBoxActionsByWhere($where , $offset, $limit); $status = ['1' => '开箱' , '2' => '关箱']; // 拼装参数 foreach($selectResult as $key=>$vo){ $selectResult[$key]['status_text'] = $status[$vo['type']]; } $return['total'] = $BoxActionModel->getAllCounts($where); //总数量 $return['rows'] = $selectResult; $this->action_log(); json_success($return); } public function MsgList(){ $param = input('param.'); if(empty($param['cabinet_number']) || empty($param['box_number'])){ json_error(1007 , '柜子号码或箱子号码不能为空'); } $where['cabinet_number'] = $param['cabinet_number']; $where['box_number'] = $param['box_number']; $limit = isset($param['pageSize']) ? $param['pageSize'] : 10; $param['pageNumber'] = isset($param['pageNumber']) ? $param['pageNumber'] : 1; $offset = ($param['pageNumber'] - 1) * $limit; $MsgModel = new MsgModel(); $selectResult = $MsgModel->getMsgsByWhere($where , $offset, $limit); $status = ['1' => '存入上报' , '2' => '取走上报']; // 拼装参数 foreach($selectResult as $key=>$vo){ $selectResult[$key]['status_text'] = $status[$vo['type']]; } $return['total'] = $MsgModel->getAllCounts($where); //总数量 $return['rows'] = $selectResult; $this->action_log(); json_success($return); } public function ActionLogList(){ $param = input('param.'); $limit = isset($param['pageSize']) ? $param['pageSize'] : 10; $param['pageNumber'] = isset($param['pageNumber']) ? $param['pageNumber'] : 1; $offset = ($param['pageNumber'] - 1) * $limit; $ActionLogModel = new ActionLogModel(); $selectResult = $ActionLogModel->getActionLogsByWhere($offset, $limit); // 拼装参数 foreach($selectResult as $key=>$vo){ } $return['total'] = $ActionLogModel->getAllCounts(); //总数量 $return['rows'] = $selectResult; $this->action_log(); json_success($return); } public function GetCabinetsBoxs(){ $CabinetModel = new CabinetModel(); $cabinets = $CabinetModel->getCabinetsByWhere(); $BoxModel = new BoxModel(); foreach ($cabinets as $key => $value){ $cabinets[$key]['box_data'] = $BoxModel->getBoxNumbers(['cabinet_number' => $value['id']]); } json_success($cabinets); } public function BoxChangeStatus(){ $cabinet_code = input('param.cabinet_code'); $box_number = input('param.box_number'); $box_status = input('param.box_status'); $cabinet = CabinetModel::where('cabinet_code',$cabinet_code)->find(); $ret = $this->ChangeStatus($cabinet['cabinet_number'] , $box_number , $box_status); if($ret['code'] == -1){ json_error(1008 , $ret['msg']); } if($ret == false){ json_error(1006); } json_success([]); } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// private function proc_request($queue_name, $key, $params){ QueueClient::push($queue_name,self::redis_host , self::redis_port ,$key,$params); [$method,$args] = $this->wait_result($params['ret_queue']); Log::record($args); return $args; } private function getid(){ return md5(rand(1000000,9999999)); } private function wait_result($queue_name) { $times = 10; while ($times--) { try { $worker = new QueueServer($queue_name,self::redis_host , self::redis_port); $queues = $worker->scan(); $content = $worker->pop($queues, 1); if(is_array($content)) { $method = key($content); $arg = current($content); return [$method,$arg]; } } catch (Exception $e) { $err = $e->getMessage(); $code = $e->getCode(); } } return [false,false]; } /** * 自提柜箱子修改状态 */ private function ChangeStatus($cabinet_number , $box_number , $status){ $BoxModel = new BoxModel(); $box = $BoxModel->getOneCabinetBox($cabinet_number,$box_number); if(empty($box)){ return msg(-1, '', '箱子不存在'); } if($status == $box['box_status']){ return true; } $where['cabinet_number'] = $cabinet_number; $where['box_number'] = $box_number; $update['box_status'] = $status; return $BoxModel->editData($where,$update); } public function test(){ pre(1); } /** * 获取柜子信息 */ private function get_cabinet($cabinet_number){ $cabinet = CabinetModel::find($cabinet_number); if(empty($cabinet)){ return false; } $cabinet = $cabinet->toArray(); return $cabinet; } }