123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238 |
- <?php
- defined('BASEPATH') OR exit('No direct script access allowed');
- class Api extends Public_Controller
- {
- function __construct()
- {
- parent::__construct();
- $this->load->driver('cache', array('adapter' => 'apc', 'backup' => 'file'));
- $this->load->model("user_model");
- $this->load->model("token_model");
- $this->load->model("branch_model");
- $this->load->model("workorder_model");
- $this->load->model("warning_model");
- $this->load->model("appauth_model");
- $this->load->library('MY_pagination');
- $this->load->helper(array('url', 'date', 'sms'));
- }
- public function get_token()
- {
- $msg = array();
- $appid = $this->input->get("appid", true);
- $secret = $this->input->get("secret", true);
- $appauth = $this->appauth_model->get_appauth_with_id($appid);
- if ($appid && $secret && $appauth && $secret == $appauth['secret']) {
- $data['token'] = $token = $this->create_token();
- $expires = new DateTime();
- $expires->modify("+2 hours");
- $data['expires_time'] = new MongoDB\BSON\UTCDateTime($expires->getTimestamp()*1000);
- if ($this->token_model->save_token($data)) {
- $msg['errcode'] = 0;
- $msg['errmsg'] = "ok";
- $msg['access_token'] = $token;
- $msg['expires_in'] = 7200;
- } else {
- $msg['errcode'] = 40013;
- $msg['errmsg'] = "invalid appid";
- }
- } else {
- $msg['errcode'] = 40013;
- $msg['errmsg'] = "invalid appid";
- }
- $this->response($msg);
- }
- public function upload_data()
- {
- $access_token = $this->input->get("access_token", true);
- $msg = array();
- if ($access_token && $this->token_exists($access_token)) {
- $json = $this->get_json();
- $data = json_decode($json, true);
- if(count($data)>=1){
- $upload_info = $data['upload_info'];
- $device = $data['device'];
- if($upload_info['type'] == "20"){
- $branch_list = $data['data'];
- if (count($branch_list) > 0) {
- foreach ($branch_list as $key => $val) {
- $val['device'] = $device;
- $this->branch_model->save_branch($val);
- $this->update_branch_cache();
- }
- }
- }elseif($upload_info['type'] == "10") {
- $warning_list = $data['data'];
- if (count($warning_list) > 0) {
- foreach ($warning_list as $key => $val) {
- $val['status'] = "10";
- $val['create_time'] = new MongoDB\BSON\UTCDateTime(time()*1000);
- $val['device'] = $device;
- $this->warning_model->insert_warning($val);
- }
- }
- }
- }
- $msg['errcode'] = 0;
- $msg['errmsg'] = "OK";
- } else {
- $msg['errcode'] = 40012;
- $msg['errmsg'] = "invalid access token";
- }
- $this->response($msg);
- }
- public function update_branch_cache(){
- $branch_list = $this->branch_model->select_branch();
- if($branch_list){
- $branch = array();
- foreach($branch_list as $key=>$val){
- $branch[$val['branch_id']] = $val;
- }
- $this->cache->save('branchs', $branch, 30000);
- }else{
- $this->cache->save('branchs', array(), 30000);
- }
- }
- public function get_status()
- {
- $access_token = $this->input->get("access_token", true);
- $msg = array();
- if ($access_token && $this->token_exists($access_token)) {
- $json = $this->get_json();
- $data = json_decode($json, true);
- if(array_key_exists("id",$data)){
- $ids = $data['id'];
- for($i = 0;$i<count($ids);$i++){
- $waning = $this->warning_model->select_warning(array("status"),$ids[$i]);
- if($waning){
- if($waning['status'] == "40"){
- $msg[$ids[$i]] = true;
- }else {
- $msg[$ids[$i]] = false;
- }
- }else{
- $msg[$ids[$i]] = false;
- }
- }
- }
- $msg['errcode'] = 0;
- $msg['errmsg'] = "OK";
- } else {
- $msg['errcode'] = 40012;
- $msg['errmsg'] = "invalid access token";
- }
- $this->response($msg);
- }
- public function get_login_url()
- {
- $access_token = $this->input->get("access_token", true);
- $msg = array();
- if ($access_token && $this->token_exists($access_token)) {
- $json = $this->get_json();
- $data = json_decode($json, true);
- $user_model = $this->user_model;
- //$user_model->set_collection_name("sso_users");
- if($user_model->is_exists("username",$data['username'])){
- $info['last_login_time'] = new MongoDB\BSON\UTCDateTime(time()*1000);
- $info['code'] = $this->create_token();
- $info['from'] = $data['from'];
- $user_model->set_val($info,array("username"=>$data['username']));
- $msg["login_url"]=site_url("v1/api/sso_login?code=".$info['code']);
- }else {
- $data['user_id'] = $this->create_id();
- $data['status'] = "10";
- $data['create_time'] = new MongoDB\BSON\UTCDateTime(time()*1000);
- $data['last_login_time'] = new MongoDB\BSON\UTCDateTime(time()*1000);
- $data['code'] = $this->create_token();
- $user_model->insert_user($data);
- $msg["login_url"]=site_url("v1/api/sso_login?code=".$data['code']);
- }
- $msg['errcode'] = 0;
- $msg['errmsg'] = "OK";
- } else {
- $msg['errcode'] = 40012;
- $msg['errmsg'] = "invalid access token";
- }
- $this->response($msg);
- }
- public function sso_login(){
- $code = $this->input->get("code", true);
- $msg = array();
- $user_model = $this->user_model;
- //$user_model->set_collection_name("sso_users");
- $sso_user = $user_model->get_user_with_code($code);
- if($code && $sso_user){
- $sso_user['code'] = "";
- $rand = substr(md5(microtime()), rand(0, 26), 5);
- $session_data = array("user_id" => (string)$sso_user["user_id"], "current_key" => $rand, "username" => $sso_user['username'], "user_type" => $sso_user['user_type'], "from" => $sso_user['from']);
- $sso_user['last_login_time'] = new MongoDB\BSON\UTCDateTime(time()*1000);
- $user_model->update_user($sso_user);
- $this->session->set_userdata($session_data);
- redirect("main/index");
- }else{
- show_error("invalid code!");
- }
- }
- public function send_sms(){
- $access_token = $this->input->get("access_token", true);
- $msg = array();
- if ($access_token && $this->token_exists($access_token)) {
- $json = $this->get_json();
- $data = json_decode($json, true);
- if(count($data)==2 && array_key_exists("mobile",$data) && array_key_exists("content",$data)){
- for($i = 0; $i< count($data['mobile']);$i++){
- $number = $data['mobile'][$i];
- if(send_by_modem($this->cache->get('setting'),$number,$data['content'])){
- $msg[$number]=true;
- }else{
- $msg[$number]=false;
- }
- }
- }
- $msg['errcode'] = 0;
- $msg['errmsg'] = "OK";
- }else {
- $msg['errcode'] = 40012;
- $msg['errmsg'] = "invalid access token";
- }
- $this->response($msg);
- }
- private function create_token()
- {
- do {
- $salt = base_convert(bin2hex($this->security->get_random_bytes(64)), 11, 36);
- if ($salt === FALSE) {
- $salt = hash('sha256', time() . mt_rand());
- }
- $token = substr($salt, 0, config_item('key_length'));
- } while ($this->token_exists($token));
- return $token;
- }
- private function token_exists($token)
- {
- if ($token) {
- if ($this->token_model->find_token($token, new MongoDB\BSON\UTCDateTime(time()*1000))) {
- return true;
- } else {
- return false;
- }
- } else {
- return false;
- }
- }
- private function get_json(){
- $postjson = file_get_contents('php://input');
- return $postjson;
- }
- }
|