'365','name' => '365'], // ['brand' => 'feie','name' => '飞鹅'], [ 'brand' => 'yilianyun', 'name' => '易联云' ], ]; /** * 获取打印机品牌 * @return array */ public function getPrinterBrand() { return $this->brand; } /** * 添加小票打印 * @param $data * @return array */ public function addPrinter($data) { $data[ 'create_time' ] = time(); model('printer')->startTrans(); try { $res = model('printer')->add($data); //易联云 if ($data[ 'brand' ] == 'yilianyun') { $result = $this->addPrinterYly($data); if ($result[ 'code' ] < 0) { model('printer')->rollback(); return $result; } } model('printer')->commit(); return $this->success($res); } catch (\Exception $e) { model('printer')->rollback(); return $this->error('', '添加失败 ' . $e->getMessage()); } } /** * 编辑小票打印 * @param $data * @return array */ public function editPrinter($data) { $data[ 'update_time' ] = time(); $res = model('printer')->update($data, [ [ 'printer_id', '=', $data[ 'printer_id' ] ] ]); return $this->success($res); } /** * 删除 * @param $condition * @return array */ public function deletePrinter($condition) { model('printer')->startTrans(); try { $printer_info = model('printer')->getInfo($condition, '*'); $res = model('printer')->delete($condition); //易联云 if ($printer_info[ 'brand' ] == 'yilianyun') { $result = $this->deletePrinterYly($printer_info); if ($result[ 'code' ] < 0) { model('printer')->rollback(); return $result; } } model('printer')->commit(); return $this->success($res); } catch (\Exception $e) { model('printer')->rollback(); return $this->error('', $e->getMessage()); } } /** * 获取小票打印信息 * @param array $condition * @param string $field * @return array */ public function getPrinterInfo($condition = [], $field = '*') { $res = model('printer')->getInfo($condition, $field); return $this->success($res); } /** * 获取小票打印列表 * @param array $condition * @param string $field * @param string $order * @param string $limit */ public function getPrinterList($condition = [], $field = '*', $order = '', $limit = null) { $list = model('printer')->getList($condition, $field, $order, '', '', '', $limit); return $this->success($list); } /** * 获取小票打印分页列表 * @param array $condition * @param number $page * @param string $page_size * @param string $order * @param string $field */ public function getPrinterPageList($condition = [], $page = 1, $page_size = PAGE_LIST_ROWS, $order = '', $field = '*') { $list = model('printer')->pageList($condition, $field, $order, $page, $page_size); return $this->success($list); } /**************************************************** 打印机管理(第三方) *********************************************************/ /******************** 易联云 start ************************/ /** * @param $data * @return array */ public function setYlyTokenConfig($data) { $config = new Config(); $res = $config->setConfig($data, '易联云小票打印token', 1, [ [ 'site_id', '=', $data[ 'site_id' ] ], [ 'app_module', '=', 'shop' ], [ 'config_key', '=', 'PRINTER_YLYTOKEN' ] ]); return $this->success($res); } /** * @return array */ public function getYlyTokenConfig($site_id) { $config = new Config(); $res = $config->getConfig([ [ 'site_id', '=', $site_id ], [ 'app_module', '=', 'shop' ], [ 'config_key', '=', 'PRINTER_YLYTOKEN' ] ]); if (empty($res[ 'data' ][ 'value' ])) { $res[ 'data' ][ 'value' ] = [ 'access_token' => '', 'end_time' => '0'//token有效期 ]; } return $res; } /** * 获取易联云token * @param $yly_config * @param $site_id * @return mixed */ public function getYlyToken($yly_config, $site_id, $type = 0) { //token配置 $config_data = $this->getYlyTokenConfig($site_id); $config = $config_data[ 'data' ][ 'value' ]; $client = new YlyOauthClient($yly_config); if ($config[ 'end_time' ] == 0 || $config[ 'end_time' ] < time() || $type == 1) { $token = $client->getToken(); //若是开放型应用请传授权码code $access_token = $token->access_token; //调用API凭证AccessToken //更新token $expires_in = $token->expires_in; $end_time = strtotime('+' . $expires_in / 86400 . 'day'); $token_data = [ 'site_id' => $site_id, 'access_token' => $token->access_token, 'end_time' => $end_time ]; $this->setYlyTokenConfig($token_data); } else { $access_token = $config[ 'access_token' ]; } return $access_token; } /** * 添加易联云打印机授权 * @param $param * @return array|mixed */ public function addPrinterYly($param) { $yly_config = new YlyConfig($param[ 'open_id' ], $param[ 'apikey' ]); $access_token = $this->getYlyToken($yly_config, $param[ 'site_id' ]); //添加打印机 $printer = new PrinterService($access_token, $yly_config); $data = $printer->addPrinter($param[ 'printer_code' ], $param[ 'printer_key' ], '', ''); if (isset($data->error) && $data->error == 0) { return $this->success(); } else { return $data; } } /** * 删除易联云打印机授权 * @param $param * @return array|mixed */ public function deletePrinterYly($param) { $yly_config = new YlyConfig($param[ 'open_id' ], $param[ 'apikey' ]); $access_token = $this->getYlyToken($yly_config, $param[ 'site_id' ]); //添加打印机 $printer = new PrinterService($access_token, $yly_config); $data = $printer->deletePrinter($param[ 'printer_code' ]); if (isset($data->error) && $data->error == 0) { return $this->success(); } else { return $data; } } /** * 重新获取易联云token * @param $site_id * @return mixed */ public function refreshToken($printer_id, $site_id) { model('config')->startTrans(); try { //token配置 $printer_info = model('printer')->getInfo([ [ 'site_id', '=', $site_id ], [ 'printer_id', '=', $printer_id ] ], '*'); $yly_config = new YlyConfig($printer_info[ 'open_id' ], $printer_info[ 'apikey' ]); $client = new YlyOauthClient($yly_config); $token = $client->getToken(); //若是开放型应用请传授权码code //更新token $expires_in = $token->expires_in; $end_time = strtotime('+' . $expires_in / 86400 . 'day'); $token_data = [ 'site_id' => $site_id, 'access_token' => $token->access_token, 'end_time' => $end_time ]; $this->setYlyTokenConfig($token_data); model('config')->commit(); return $this->success(); } catch (\Exception $e) { model('config')->rollback(); return $this->error('', $e->getMessage()); } } /******************** 易联云 end ************************/ }