From e4d3c89f4c0386e708deaf989f4c2fe97a6c7f73 Mon Sep 17 00:00:00 2001 From: "ZLW-PC\\Administrator" <374861669@qq.com> Date: Thu, 24 May 2018 21:38:32 +0800 Subject: [PATCH] user --- app/Common/ReturnData.php | 2 + app/Common/Token.php | 2 +- app/Http/Controllers/Api/CustomController.php | 56 - app/Http/Controllers/Api/ImageController.php | 120 +- app/Http/Controllers/Api/QrcodeController.php | 2 - app/Http/Controllers/Api/UserController.php | 240 +- .../Api/UserGoodsHistoryController.php | 113 +- .../Controllers/Api/UserMessageController.php | 104 +- .../Controllers/Api/UserMoneyController.php | 91 +- .../Controllers/Api/UserPointController.php | 89 +- .../Api/UserRechargeController.php | 115 +- .../Api/UserWithdrawController.php | 118 +- .../Controllers/Weixin/UserController.php | 2 +- app/Http/Logic/ArctypeLogic.php | 12 +- app/Http/Logic/ArticleLogic.php | 12 +- app/Http/Logic/BonusLogic.php | 13 +- app/Http/Logic/CartLogic.php | 10 +- app/Http/Logic/CollectGoodsLogic.php | 12 +- app/Http/Logic/CommentLogic.php | 12 +- app/Http/Logic/FeedbackLogic.php | 12 +- app/Http/Logic/FriendlinkLogic.php | 12 +- app/Http/Logic/GoodsBrandLogic.php | 12 +- app/Http/Logic/GoodsImgLogic.php | 12 +- app/Http/Logic/GoodsLogic.php | 12 +- app/Http/Logic/GoodsSearchwordLogic.php | 12 +- app/Http/Logic/GoodsTypeLogic.php | 12 +- app/Http/Logic/GuestbookLogic.php | 12 +- app/Http/Logic/KeywordLogic.php | 12 +- app/Http/Logic/KuaidiLogic.php | 12 +- app/Http/Logic/MenuLogic.php | 12 +- app/Http/Logic/OrderGoodsLogic.php | 12 +- app/Http/Logic/OrderLogic.php | 12 +- app/Http/Logic/PageLogic.php | 12 +- app/Http/Logic/PaymentLogic.php | 12 +- app/Http/Logic/RegionLogic.php | 12 +- app/Http/Logic/SearchwordLogic.php | 12 +- app/Http/Logic/SlideLogic.php | 12 +- app/Http/Logic/SmsLogLogic.php | 12 +- app/Http/Logic/SysconfigLogic.php | 12 +- app/Http/Logic/TagindexLogic.php | 12 +- app/Http/Logic/TaglistLogic.php | 12 +- app/Http/Logic/TokenLogic.php | 12 +- app/Http/Logic/UserAddressLogic.php | 12 +- app/Http/Logic/UserBonusLogic.php | 12 +- app/Http/Logic/UserGoodsHistoryLogic.php | 23 +- app/Http/Logic/UserLogic.php | 114 +- app/Http/Logic/UserMessageLogic.php | 14 +- app/Http/Logic/UserMoneyLogic.php | 51 +- app/Http/Logic/UserPointLogic.php | 51 +- app/Http/Logic/UserRechargeLogic.php | 54 +- app/Http/Logic/UserRoleLogic.php | 12 +- app/Http/Logic/UserWithdrawLogic.php | 80 +- app/Http/Logic/VerifyCodeLogic.php | 12 +- app/Http/Logic/WeixinMenuLogic.php | 12 +- app/Http/Model/User.php | 194 +- app/Http/Model/UserGoodsHistory.php | 96 - app/Http/Model/UserMessage.php | 67 - app/Http/Model/UserMoney.php | 76 +- app/Http/Model/UserPoint.php | 69 +- app/Http/Model/UserRecharge.php | 71 +- app/Http/Model/UserWithdraw.php | 102 +- app/Http/Requests/UserGoodsHistoryRequest.php | 92 + app/Http/Requests/UserMessageRequest.php | 102 + app/Http/Requests/UserMoneyRequest.php | 101 + app/Http/Requests/UserPointRequest.php | 101 + app/Http/Requests/UserRechargeRequest.php | 110 + app/Http/Requests/UserRequest.php | 1 + app/Http/Requests/UserWithdrawRequest.php | 113 + app/Http/Service/AliyunOSS.php | 106 + composer.json | 2 +- resources/org/OSS/Core/MimeTypes.php | 262 ++ resources/org/OSS/Core/OssException.php | 54 + resources/org/OSS/Core/OssUtil.php | 461 +++ resources/org/OSS/Http/LICENSE | 25 + resources/org/OSS/Http/RequestCore.php | 896 ++++++ .../org/OSS/Http/RequestCore_Exception.php | 8 + resources/org/OSS/Http/ResponseCore.php | 56 + resources/org/OSS/Model/BucketInfo.php | 78 + resources/org/OSS/Model/BucketListInfo.php | 39 + resources/org/OSS/Model/CnameConfig.php | 99 + resources/org/OSS/Model/CorsConfig.php | 113 + resources/org/OSS/Model/CorsRule.php | 150 + .../org/OSS/Model/GetLiveChannelHistory.php | 34 + .../org/OSS/Model/GetLiveChannelInfo.php | 68 + .../org/OSS/Model/GetLiveChannelStatus.php | 107 + resources/org/OSS/Model/LifecycleAction.php | 88 + resources/org/OSS/Model/LifecycleConfig.php | 107 + resources/org/OSS/Model/LifecycleRule.php | 126 + .../org/OSS/Model/ListMultipartUploadInfo.php | 134 + resources/org/OSS/Model/ListPartsInfo.php | 97 + resources/org/OSS/Model/LiveChannelConfig.php | 121 + .../org/OSS/Model/LiveChannelHistory.php | 59 + resources/org/OSS/Model/LiveChannelInfo.php | 107 + .../org/OSS/Model/LiveChannelListInfo.php | 107 + resources/org/OSS/Model/LoggingConfig.php | 86 + resources/org/OSS/Model/ObjectInfo.php | 93 + resources/org/OSS/Model/ObjectListInfo.php | 126 + resources/org/OSS/Model/PartInfo.php | 63 + resources/org/OSS/Model/PrefixInfo.php | 36 + resources/org/OSS/Model/RefererConfig.php | 93 + .../org/OSS/Model/StorageCapacityConfig.php | 74 + resources/org/OSS/Model/UploadInfo.php | 55 + resources/org/OSS/Model/WebsiteConfig.php | 76 + resources/org/OSS/Model/XmlConfig.php | 27 + resources/org/OSS/OssClient.php | 2739 +++++++++++++++++ resources/org/OSS/Result/AclResult.php | 32 + resources/org/OSS/Result/AppendResult.php | 27 + resources/org/OSS/Result/BodyResult.php | 19 + resources/org/OSS/Result/CallbackResult.php | 21 + resources/org/OSS/Result/CopyObjectResult.php | 30 + .../org/OSS/Result/DeleteObjectsResult.php | 27 + resources/org/OSS/Result/ExistResult.php | 35 + resources/org/OSS/Result/GetCnameResult.php | 19 + resources/org/OSS/Result/GetCorsResult.php | 35 + .../org/OSS/Result/GetLifecycleResult.php | 41 + .../Result/GetLiveChannelHistoryResult.php | 19 + .../OSS/Result/GetLiveChannelInfoResult.php | 19 + .../OSS/Result/GetLiveChannelStatusResult.php | 19 + .../org/OSS/Result/GetLocationResult.php | 30 + resources/org/OSS/Result/GetLoggingResult.php | 41 + resources/org/OSS/Result/GetRefererResult.php | 41 + .../OSS/Result/GetStorageCapacityResult.php | 34 + resources/org/OSS/Result/GetWebsiteResult.php | 40 + resources/org/OSS/Result/HeaderResult.php | 23 + .../Result/InitiateMultipartUploadResult.php | 29 + .../org/OSS/Result/ListBucketsResult.php | 33 + .../org/OSS/Result/ListLiveChannelResult.php | 16 + .../OSS/Result/ListMultipartUploadResult.php | 55 + .../org/OSS/Result/ListObjectsResult.php | 71 + resources/org/OSS/Result/ListPartsResult.php | 42 + .../org/OSS/Result/PutLiveChannelResult.php | 16 + .../org/OSS/Result/PutSetDeleteResult.php | 20 + resources/org/OSS/Result/Result.php | 175 ++ resources/org/OSS/Result/SymlinkResult.php | 24 + resources/org/OSS/Result/UploadPartResult.php | 28 + .../weixin/feedback/userFeedbackAdd.blade.php | 4 +- routes/web.php | 1 - 137 files changed, 9800 insertions(+), 1381 deletions(-) delete mode 100644 app/Http/Controllers/Api/CustomController.php create mode 100644 app/Http/Requests/UserGoodsHistoryRequest.php create mode 100644 app/Http/Requests/UserMessageRequest.php create mode 100644 app/Http/Requests/UserMoneyRequest.php create mode 100644 app/Http/Requests/UserPointRequest.php create mode 100644 app/Http/Requests/UserRechargeRequest.php create mode 100644 app/Http/Requests/UserWithdrawRequest.php create mode 100644 app/Http/Service/AliyunOSS.php create mode 100644 resources/org/OSS/Core/MimeTypes.php create mode 100644 resources/org/OSS/Core/OssException.php create mode 100644 resources/org/OSS/Core/OssUtil.php create mode 100644 resources/org/OSS/Http/LICENSE create mode 100644 resources/org/OSS/Http/RequestCore.php create mode 100644 resources/org/OSS/Http/RequestCore_Exception.php create mode 100644 resources/org/OSS/Http/ResponseCore.php create mode 100644 resources/org/OSS/Model/BucketInfo.php create mode 100644 resources/org/OSS/Model/BucketListInfo.php create mode 100644 resources/org/OSS/Model/CnameConfig.php create mode 100644 resources/org/OSS/Model/CorsConfig.php create mode 100644 resources/org/OSS/Model/CorsRule.php create mode 100644 resources/org/OSS/Model/GetLiveChannelHistory.php create mode 100644 resources/org/OSS/Model/GetLiveChannelInfo.php create mode 100644 resources/org/OSS/Model/GetLiveChannelStatus.php create mode 100644 resources/org/OSS/Model/LifecycleAction.php create mode 100644 resources/org/OSS/Model/LifecycleConfig.php create mode 100644 resources/org/OSS/Model/LifecycleRule.php create mode 100644 resources/org/OSS/Model/ListMultipartUploadInfo.php create mode 100644 resources/org/OSS/Model/ListPartsInfo.php create mode 100644 resources/org/OSS/Model/LiveChannelConfig.php create mode 100644 resources/org/OSS/Model/LiveChannelHistory.php create mode 100644 resources/org/OSS/Model/LiveChannelInfo.php create mode 100644 resources/org/OSS/Model/LiveChannelListInfo.php create mode 100644 resources/org/OSS/Model/LoggingConfig.php create mode 100644 resources/org/OSS/Model/ObjectInfo.php create mode 100644 resources/org/OSS/Model/ObjectListInfo.php create mode 100644 resources/org/OSS/Model/PartInfo.php create mode 100644 resources/org/OSS/Model/PrefixInfo.php create mode 100644 resources/org/OSS/Model/RefererConfig.php create mode 100644 resources/org/OSS/Model/StorageCapacityConfig.php create mode 100644 resources/org/OSS/Model/UploadInfo.php create mode 100644 resources/org/OSS/Model/WebsiteConfig.php create mode 100644 resources/org/OSS/Model/XmlConfig.php create mode 100644 resources/org/OSS/OssClient.php create mode 100644 resources/org/OSS/Result/AclResult.php create mode 100644 resources/org/OSS/Result/AppendResult.php create mode 100644 resources/org/OSS/Result/BodyResult.php create mode 100644 resources/org/OSS/Result/CallbackResult.php create mode 100644 resources/org/OSS/Result/CopyObjectResult.php create mode 100644 resources/org/OSS/Result/DeleteObjectsResult.php create mode 100644 resources/org/OSS/Result/ExistResult.php create mode 100644 resources/org/OSS/Result/GetCnameResult.php create mode 100644 resources/org/OSS/Result/GetCorsResult.php create mode 100644 resources/org/OSS/Result/GetLifecycleResult.php create mode 100644 resources/org/OSS/Result/GetLiveChannelHistoryResult.php create mode 100644 resources/org/OSS/Result/GetLiveChannelInfoResult.php create mode 100644 resources/org/OSS/Result/GetLiveChannelStatusResult.php create mode 100644 resources/org/OSS/Result/GetLocationResult.php create mode 100644 resources/org/OSS/Result/GetLoggingResult.php create mode 100644 resources/org/OSS/Result/GetRefererResult.php create mode 100644 resources/org/OSS/Result/GetStorageCapacityResult.php create mode 100644 resources/org/OSS/Result/GetWebsiteResult.php create mode 100644 resources/org/OSS/Result/HeaderResult.php create mode 100644 resources/org/OSS/Result/InitiateMultipartUploadResult.php create mode 100644 resources/org/OSS/Result/ListBucketsResult.php create mode 100644 resources/org/OSS/Result/ListLiveChannelResult.php create mode 100644 resources/org/OSS/Result/ListMultipartUploadResult.php create mode 100644 resources/org/OSS/Result/ListObjectsResult.php create mode 100644 resources/org/OSS/Result/ListPartsResult.php create mode 100644 resources/org/OSS/Result/PutLiveChannelResult.php create mode 100644 resources/org/OSS/Result/PutSetDeleteResult.php create mode 100644 resources/org/OSS/Result/Result.php create mode 100644 resources/org/OSS/Result/SymlinkResult.php create mode 100644 resources/org/OSS/Result/UploadPartResult.php diff --git a/app/Common/ReturnData.php b/app/Common/ReturnData.php index 4bd0151..cadaa94 100644 --- a/app/Common/ReturnData.php +++ b/app/Common/ReturnData.php @@ -5,6 +5,7 @@ class ReturnData { //通用 const SUCCESS = 0; //操作成功 + const FAIL = 1; //操作失败 const FORBIDDEN = 8001; //权限不足 const SYSTEM_FAIL = 8002; //系统错误,如数据写入失败之类的 const PARAMS_ERROR = 8003; //参数错误 @@ -54,6 +55,7 @@ class ReturnData //中文错误详情 public static $codeTexts = array( 0 => '操作成功', + 1 => '操作失败', 8001 => '权限不足', 8002 => '系统错误,请联系管理员', 8003 => '参数错误', diff --git a/app/Common/Token.php b/app/Common/Token.php index eb3e9c1..458b9c9 100644 --- a/app/Common/Token.php +++ b/app/Common/Token.php @@ -87,7 +87,7 @@ class Token { if($data == $token->data && strtotime($token->expired_at)>time()) { - return array('access_token'=>$token->token,'expired_at'=>$token->expired_at); + return array('access_token'=>$token->token,'expired_at'=>$token->expired_at,'uid'=>$token->uid,'type'=>$token->type); } } diff --git a/app/Http/Controllers/Api/CustomController.php b/app/Http/Controllers/Api/CustomController.php deleted file mode 100644 index 714ca0b..0000000 --- a/app/Http/Controllers/Api/CustomController.php +++ /dev/null @@ -1,56 +0,0 @@ -input('limit', 10); - $data['offset'] = $request->input('offset', 0); - if($request->input('type', null) !== null){$data['type'] = $request->input('type');} - - $res = UserMoney::getList($data); - if(!$res) - { - return ReturnData::create(ReturnData::SYSTEM_FAIL); - } - - return ReturnData::create(ReturnData::SUCCESS,$res); - } - - //添加余额明细 - public function userMoneyAdd(Request $request) - { - //参数 - $data['type'] = $request->input('type',null); - $data['money'] = $request->input('money',null); - $data['des'] = $request->input('des',null); - if($request->input('user_money', null) !== null){$data['user_money'] = $request->input('user_money');} - $data['add_time'] = time(); - $data['user_id'] = Token::$uid; - - if($data['type']===null || $data['money']===null || $data['des']===null) - { - return ReturnData::create(ReturnData::PARAMS_ERROR); - } - - $res = UserMoney::add($data); - if(!$res) - { - return ReturnData::create(ReturnData::SYSTEM_FAIL); - } - - return ReturnData::create(ReturnData::SUCCESS,$res); - } -} \ No newline at end of file diff --git a/app/Http/Controllers/Api/ImageController.php b/app/Http/Controllers/Api/ImageController.php index 67c99fa..7ee42a7 100644 --- a/app/Http/Controllers/Api/ImageController.php +++ b/app/Http/Controllers/Api/ImageController.php @@ -1,7 +1,6 @@ aliyunOSSFileUpload($_FILES); + + if($res['code'] == 1) + { + $this->success($res['data']); + } + + $this->error($res['msg']); + } + /** * 多文件上传,成功返回路径,不含域名 * 多文件上传格式: @@ -199,4 +211,110 @@ class ImageController extends CommonController return ReturnData::create(ReturnData::SUCCESS,$res); } + + public function aliyunOSSFileUpload($files) + { + $res = []; + + //$files = $_FILES;//得到传输的数据 + $path = 'data/uploads/'.date('Y/m',time()); + + if($files) + { + // 对上传文件数组信息处理 + $files = $this->dealFiles($files); + + foreach($files as $key=>$file) + { + $type = strtolower(substr(strrchr($file["name"], '.'), 1)); //文件后缀 + + $image_path = $path.'/'.date('Ymdhis',time()).rand(1000,9999).'.'.$type; + $uploads_path = $path; //存储路径 + + $allow_type = array('jpg','jpeg','gif','png','doc','docx','txt','pdf'); //定义允许上传的类型 + + //判断文件类型是否被允许上传 + if(!in_array($type, $allow_type)) + { + //如果不被允许,则直接停止程序运行 + //$this->error('文件格式不正确'); + return ['code'=>0,'msg'=>'文件格式不正确','data'=>'']; + } + + //判断是否是通过HTTP POST上传的 + if(!is_uploaded_file($file['tmp_name'])) + { + //如果不是通过HTTP POST上传的 + //$this->error('上传失败'); + return ['code'=>0,'msg'=>'上传失败','data'=>'']; + } + + //文件小于1M + if ($file["size"] < 2048000) + { + if ($file["error"] > 0) + { + //$this->error($file["error"]); + return ['code'=>0,'msg'=>$file["error"],'data'=>'']; + } + else + { + /* if(!file_exists(substr(ROOT_PATH, 0, -1).$uploads_path)) + { + Helper::createDir(substr(ROOT_PATH, 0, -1).$uploads_path); //创建文件夹; + } + + move_uploaded_file($file["tmp_name"], substr(ROOT_PATH, 0, -1).$image_path); */ + + $image = AliyunOSS::uploadFile($image_path, $file['tmp_name']); + if($image && $image['code']==1){}else{/* $this->error('系统错误'); */return ['code'=>0,'msg'=>'系统错误','data'=>''];} + } + } + else + { + //$this->error('文件不得超过2M'); + return ['code'=>0,'msg'=>'文件不得超过2M','data'=>'']; + } + + $res[$key] = $image['data']['oss-request-url']; + } + } + else + { + //$this->error('参数错误'); + return ['code'=>0,'msg'=>'参数错误','data'=>'']; + } + + return ['code'=>1,'msg'=>'操作成功','data'=>$res]; + } + + /** + * 转换上传文件数组变量为正确的方式 + * @access public + * @param array $files 上传的文件变量 + * @return array + */ + public function dealFiles($files) + { + $fileArray = []; + $n = 0; + foreach ($files as $key => $file) { + if (is_array($file['name'])) { + $keys = array_keys($file); + $count = count($file['name']); + for ($i = 0; $i < $count; $i++) { + $fileArray[$n]['key'] = $key; + foreach ($keys as $_key) { + $fileArray[$n][$_key] = $file[$_key][$i]; + } + $n++; + } + } else { + $fileArray = $files; + break; + } + } + + return $fileArray; + } } \ No newline at end of file diff --git a/app/Http/Controllers/Api/QrcodeController.php b/app/Http/Controllers/Api/QrcodeController.php index 200a2d4..d66d38d 100644 --- a/app/Http/Controllers/Api/QrcodeController.php +++ b/app/Http/Controllers/Api/QrcodeController.php @@ -1,7 +1,5 @@ input('id',null))){return ReturnData::create(ReturnData::PARAMS_ERROR);} - $id = $request->input('id'); - if(Helper::isPostRequest()) { - unset($_POST['id']); - $where['id'] = $id; - //$where['user_id'] = Token::$uid; + $where['id'] = Token::$uid; + + //判断用户名是否已经存在 + if($request->input('user_name', null)!==null) + { + if(model('User')->getOne([['user_name', '=', $request->input('user_name')],['id', '<>', Token::$uid]])) + { + return ReturnData::create(ReturnData::PARAMS_ERROR,null,'用户名已存在'); + } + } - return $this->getLogic()->edit($_POST,$where); + if($request->input('email', null)!==null){$data['email'] = $request->input('email');} + if($request->input('sex', null)!==null){$data['sex'] = $request->input('sex');} + if($request->input('birthday', null)!==null){$data['birthday'] = $request->input('birthday');} + if($request->input('address_id', null)!==null){$data['address_id'] = $request->input('address_id');} + if($request->input('nickname', null)!==null){$data['nickname'] = $request->input('nickname');} + if($request->input('mobile', null)!==null){$data['mobile'] = $request->input('mobile');} + if($request->input('group_id', null)!==null){$data['group_id'] = $request->input('group_id');} + if($request->input('password', null)!==null){$data['password'] = $request->input('password');} + if($request->input('head_img', null)!==null){$data['head_img'] = $request->input('head_img');} + if($request->input('refund_account', null)!==null){$data['refund_account'] = $request->input('refund_account');} + if($request->input('refund_name', null)!==null){$data['refund_name'] = $request->input('refund_name');} + + return $this->getLogic()->edit($data,$where); } } @@ -118,65 +134,6 @@ class UserController extends CommonController return ReturnData::create(ReturnData::SUCCESS,$res); } - /* - //修改用户信息 - public function userInfoUpdate(Request $request) - { - if($request->input('user_name', null)!==null) - { - $data['user_name'] = $request->input('user_name'); - - if(User::getOneUser($data)) - { - return ReturnData::create(ReturnData::PARAMS_ERROR,null,'用户名已存在'); - } - } - - if($request->input('email', null)!==null){$data['email'] = $request->input('email');} - if($request->input('sex', null)!==null){$data['sex'] = $request->input('sex');} - if($request->input('birthday', null)!==null){$data['birthday'] = $request->input('birthday');} - if($request->input('money', null)!==null){$data['money'] = $request->input('money');} - if($request->input('frozen_money', null)!==null){$data['frozen_money'] = $request->input('frozen_money');} - if($request->input('point', null)!==null){$data['point'] = $request->input('point');} - if($request->input('address_id', null)!==null){$data['address_id'] = $request->input('address_id');} - if($request->input('user_rank', null)!==null){$data['user_rank'] = $request->input('user_rank');} - if($request->input('parent_id', null)!==null){$data['parent_id'] = $request->input('parent_id');} - if($request->input('nickname', null)!==null){$data['nickname'] = $request->input('nickname');} - if($request->input('mobile', null)!==null){$data['mobile'] = $request->input('mobile');} - if($request->input('status', null)!==null){$data['status'] = $request->input('status');} - if($request->input('group_id', null)!==null){$data['group_id'] = $request->input('group_id');} - if($request->input('password', null)!==null){$data['password'] = $request->input('password');} - if($request->input('head_img', null)!==null){$data['head_img'] = $request->input('head_img');} - if($request->input('refund_account', null)!==null){$data['refund_account'] = $request->input('refund_account');} - if($request->input('refund_name', null)!==null){$data['refund_name'] = $request->input('refund_name');} - - if (isset($data)) - { - User::modify(array('id'=>Token::$uid),$data); - } - - return ReturnData::create(ReturnData::SUCCESS); - } - - //修改用户余额 - public function userMoneyUpdate(Request $request) - { - $data['money'] = $request->input('money',''); - - if($data['money'] == '' || $data['money'] <= 0) - { - return ReturnData::create(ReturnData::PARAMS_ERROR); - } - - $user = User::getOneUser(array('id'=>Token::$uid)); - $data['money'] = $user['money'] - $data['money']; - - if(User::modify(array('id'=>Token::$uid),$data)) - { - return ReturnData::create(ReturnData::SUCCESS); - } - } - //修改用户密码、支付密码 public function userPasswordUpdate(Request $request) { @@ -184,64 +141,27 @@ class UserController extends CommonController { $data['password'] = $request->input('password'); $data['old_password'] = $request->input('old_password'); - + if($data['password'] == $data['old_password']){return ReturnData::create(ReturnData::PARAMS_ERROR,null,'新旧密码相同');} } - + if($request->input('pay_password', '')!='') { $data['pay_password'] = $request->input('pay_password'); $data['old_pay_password'] = $request->input('old_pay_password',''); - - if($data['pay_password'] == $data['old_pay_password']){return ReturnData::create(ReturnData::PARAMS_ERROR,null,'新旧密码相同');} - } - - if (isset($data)) - { - $res = User::userPasswordUpdate(array('id'=>Token::$uid),$data); - - if($res === false) - { - return ReturnData::create(ReturnData::SYSTEM_FAIL,null,$res); - } - - return ReturnData::create(ReturnData::SUCCESS); + + if($data['pay_password'] == $data['old_pay_password']){return ReturnData::create(ReturnData::PARAMS_ERROR,null,'新旧支付密码相同');} } - - return ReturnData::create(ReturnData::PARAMS_ERROR); - } - - //用户列表 - public function userList(Request $request) - { - //参数 - $data['limit'] = $request->input('limit', 10); - $data['offset'] = $request->input('offset', 0); - if($request->input('parent_id', '')!=''){$data['parent_id'] = $request->input('parent_id');} - if($request->input('group_id', '')!=''){$data['group_id'] = $request->input('group_id');} - if($request->input('sex', '')!=''){$data['sex'] = $request->input('sex');} + if(!isset($data)){return ReturnData::create(ReturnData::PARAMS_ERROR);} - $res = User::getList($data); - if(!$res) - { - return ReturnData::create(ReturnData::SYSTEM_FAIL); - } - - return ReturnData::create(ReturnData::SUCCESS,$res); + return $this->getLogic()->userPasswordUpdate($data, array('id'=>Token::$uid)); } //签到 public function signin(Request $request) { - $res = User::signin(); - - if($res !== true) - { - return ReturnData::create(ReturnData::PARAMS_ERROR,null,$res); - } - - return ReturnData::create(ReturnData::SUCCESS); + return $this->getLogic()->signin(array('id'=>Token::$uid,'status'=>User::USER_NORMAL_STATUS)); } //登录 @@ -256,14 +176,7 @@ class UserController extends CommonController return ReturnData::create(ReturnData::PARAMS_ERROR); } - $res = User::wxLogin($data); - - if ($res === false) - { - return ReturnData::create(ReturnData::PARAMS_ERROR,null,'账号或密码错误'); - } - - return ReturnData::create(ReturnData::SUCCESS,$res); + return $this->getLogic()->wxLogin($data); } //注册 @@ -272,52 +185,47 @@ class UserController extends CommonController $data['mobile'] = $request->input('mobile',''); $data['user_name'] = $request->input('user_name',''); $data['password'] = $request->input('password',''); - $data['parent_id'] = $request->input('parent_id',''); - $parent_mobile = $request->input('parent_mobile',null); + $data['parent_id'] = 0;if($request->input('parent_id',null)!=null){$data['parent_id'] = $request->input('parent_id');} + $parent_mobile = $request->input('parent_mobile',''); if (($data['mobile']=='' && $data['user_name']=='') || $data['password']=='') { return ReturnData::create(ReturnData::PARAMS_ERROR); } - if ($parent_mobile!=null) + if ($parent_mobile!='') { - if($user = User::getOneUser(array('mobile'=>$parent_mobile))) + if($user = model('User')->getOne(array('mobile'=>$parent_mobile))) { $data['parent_id'] = $user->id; } else { - return ReturnData::create(ReturnData::PARAMS_ERROR,null,'推荐人手机号错误'); + return ReturnData::create(ReturnData::PARAMS_ERROR,null,'推荐人不存在或推荐人手机号错误'); } } - if (isset($data['mobile']) && !Helper::isValidMobile($data['mobile'])) + if ($data['mobile']!='') { - return ReturnData::create(ReturnData::MOBILE_FORMAT_FAIL); + //判断手机格式 + if(!Helper::isValidMobile($data['mobile'])){return ReturnData::create(ReturnData::MOBILE_FORMAT_FAIL);} + + //判断是否已经注册 + if (model('User')->getOne(array('mobile'=>$data['mobile']))) + { + return ReturnData::create(ReturnData::MOBILE_EXIST); + } } - //判断是否已经注册 - if (User::getOneUser(array('mobile'=>$data['mobile']))) + if ($data['user_name']!='') { - return ReturnData::create(ReturnData::MOBILE_EXIST); - } - - if (User::getOneUser(array('user_name'=>$data['user_name']))) - { - return ReturnData::create(ReturnData::PARAMS_ERROR,null,'用户名已存在'); - } - - $data['add_time'] = time(); - //添加用户 - $res = User::wxRegister($data); - - if($res == false) - { - return ReturnData::create(ReturnData::SYSTEM_FAIL); + if (model('User')->getOne(array('user_name'=>$data['user_name']))) + { + return ReturnData::create(ReturnData::PARAMS_ERROR,null,'用户名已存在'); + } } - return ReturnData::create(ReturnData::SUCCESS,$res); + return $this->getLogic()->wxRegister($data); } //微信授权注册 @@ -328,9 +236,7 @@ class UserController extends CommonController $data['sex'] = $request->input('sex',''); $data['head_img'] = $request->input('head_img',''); $data['nickname'] = $request->input('nickname',''); - $data['parent_id'] = $request->input('parent_id',''); - $parent_mobile = $request->input('parent_mobile',''); - $data['mobile'] = $request->input('mobile',''); + $data['parent_id'] = 0;if($request->input('parent_id',null)!=null){$data['parent_id'] = $request->input('parent_id');} $data['user_name'] = date('YmdHis').dechex(rand(1000,9999)); $data['password'] = md5('123456'); @@ -339,47 +245,19 @@ class UserController extends CommonController return ReturnData::create(ReturnData::PARAMS_ERROR); } - if ($parent_mobile!='') - { - if($user = User::getOneUser(array('mobile'=>$parent_mobile))) - { - $data['parent_id'] = $user->id; - } - else - { - return ReturnData::create(ReturnData::PARAMS_ERROR,null,'推荐人手机号错误'); - } - } - - if (isset($data['mobile']) && !Helper::isValidMobile($data['mobile'])) + if (model('User')->getOne(array('openid'=>$data['openid']))) { - return ReturnData::create(ReturnData::MOBILE_FORMAT_FAIL); - } - - //判断是否已经注册 - if (User::getOneUser(array('mobile'=>$data['mobile']))) - { - return ReturnData::create(ReturnData::MOBILE_EXIST); - } - - if (User::getOneUser(array('openid'=>$data['openid']))) - { - return ReturnData::create(ReturnData::SUCCESS,User::wxLogin(array('openid'=>$data['openid']))); + return $this->getLogic()->wxLogin(array('openid'=>$data['openid'])); } //添加用户 - $res = User::wxRegister($data); - - if($res === false) - { - return ReturnData::create(ReturnData::SYSTEM_FAIL); - } + $res = $this->getLogic()->wxRegister($data); + if($res['code'] != ReturnData::SUCCESS){return $res;} //更新用户名user_name,微信登录没有用户名 - $uid = DB::table('user')->where(array('openid'=>$data['openid']))->value('id'); - if($uid){User::modify(array('openid'=>$data['openid']),array('user_name'=>'a'.$uid));} + model('User')->edit(array('user_name'=>'u'.$res['code']['data']['uid']),array('id'=>$res['code']['data']['uid'])); - return ReturnData::create(ReturnData::SUCCESS,User::wxLogin(array('openid'=>$data['openid']))); + return $this->getLogic()->wxLogin(array('openid'=>$data['openid'])); } //验证码登录 @@ -577,5 +455,5 @@ class UserController extends CommonController MallDataManager::tokenDelete(['uid'=>Token::$uid]); return ReturnCode::create(ReturnCode::SUCCESS); - } */ + } } \ No newline at end of file diff --git a/app/Http/Controllers/Api/UserGoodsHistoryController.php b/app/Http/Controllers/Api/UserGoodsHistoryController.php index 7caff9b..f0aebc7 100644 --- a/app/Http/Controllers/Api/UserGoodsHistoryController.php +++ b/app/Http/Controllers/Api/UserGoodsHistoryController.php @@ -1,13 +1,15 @@ input('limit', 10); - $data['offset'] = $request->input('offset', 0); - - $data['user_id'] = Token::$uid; - - $res = UserGoodsHistory::getList($data); - if($res === false) - { - return ReturnData::create(ReturnData::SYSTEM_FAIL); - } + $limit = $request->input('limit', 10); + $offset = $request->input('offset', 0); + $where['user_id'] = Token::$uid; + $res = $this->getLogic()->getList($where, array('id', 'desc'), '*', $offset, $limit); + return ReturnData::create(ReturnData::SUCCESS,$res); } - //我的足迹添加 - public function userGoodsHistoryAdd(Request $request) + public function userGoodsHistoryDetail(Request $request) { //参数 - $data['goods_id'] = $request->input('goods_id',null); - $data['user_id'] = Token::$uid; + if(!checkIsNumber($request->input('id',null))){return ReturnData::create(ReturnData::PARAMS_ERROR);} + $id = $request->input('id'); + $where['id'] = $id; - if($data['goods_id']===null || $data['user_id']===null) + $res = $this->getLogic()->getOne($where); + if(!$res) { - return ReturnData::create(ReturnData::PARAMS_ERROR); - } - - $res = UserGoodsHistory::add($data); - if($res === false) - { - return ReturnData::create(ReturnData::SYSTEM_FAIL); + return ReturnData::create(ReturnData::RECORD_NOT_EXIST); } return ReturnData::create(ReturnData::SUCCESS,$res); } - //删除一条我的足迹 - public function userGoodsHistoryDelete(Request $request) - { - //参数 - $id = $request->input('id',null); + //添加 + public function userGoodsHistoryAdd(Request $request) + { + if(Helper::isPostRequest()) + { + $_POST['user_id'] = Token::$uid; + + return $this->getLogic()->add($_POST); + } + } + + //修改 + public function userGoodsHistoryUpdate(Request $request) + { + if(!checkIsNumber($request->input('id',null))){return ReturnData::create(ReturnData::PARAMS_ERROR);} + $id = $request->input('id'); - $res = UserGoodsHistory::remove($id,Token::$uid); - if($res === false) - { - return ReturnData::create(ReturnData::SYSTEM_FAIL); - } + if(Helper::isPostRequest()) + { + unset($_POST['id']); + $where['id'] = $id; + $where['user_id'] = Token::$uid; + + return $this->getLogic()->edit($_POST,$where); + } + } + + //删除 + public function userGoodsHistoryDelete(Request $request) + { + if(!checkIsNumber($request->input('id',null))){return ReturnData::create(ReturnData::PARAMS_ERROR);} + $id = $request->input('id'); - return ReturnData::create(ReturnData::SUCCESS,$res); + if(Helper::isPostRequest()) + { + $where['id'] = $id; + $where['user_id'] = Token::$uid; + + return $this->getLogic()->del($where); + } } //清空我的足迹 public function userGoodsHistoryClear(Request $request) { - //参数 - $user_id = Token::$uid; - - $res = UserGoodsHistory::clear($user_id); - if($res === false) - { - return ReturnData::create(ReturnData::SYSTEM_FAIL); - } - - return ReturnData::create(ReturnData::SUCCESS,$res); + if(Helper::isPostRequest()) + { + $where['user_id'] = Token::$uid; + + return $this->getLogic()->del($where); + } } } \ No newline at end of file diff --git a/app/Http/Controllers/Api/UserMessageController.php b/app/Http/Controllers/Api/UserMessageController.php index 769d695..f3ac81b 100644 --- a/app/Http/Controllers/Api/UserMessageController.php +++ b/app/Http/Controllers/Api/UserMessageController.php @@ -1,11 +1,13 @@ input('limit', 10); - $data['offset'] = $request->input('offset', 0); - if($request->input('type', '') != ''){$data['type'] = $request->input('type');} - if($request->input('status', '') != ''){$data['status'] = $request->input('status');} - $data['user_id'] = Token::$uid; + $limit = $request->input('limit', 10); + $offset = $request->input('offset', 0); + if($request->input('type', null) != null){$where['type'] = $request->input('type');} + if($request->input('status', null) != null){$where['status'] = $request->input('status');} - $res = UserMessage::getList($data); - if(!$res) - { - return ReturnData::create(ReturnData::SYSTEM_FAIL); - } + $where['user_id'] = Token::$uid; + $res = $this->getLogic()->getList($where, array('id', 'desc'), '*', $offset, $limit); + return ReturnData::create(ReturnData::SUCCESS,$res); } - //添加用户消息 - public function userMessageAdd(Request $request) + public function userMessageDetail(Request $request) { //参数 - $data['des'] = $request->input('des',''); - if($request->input('type', '') != ''){$data['type'] = $request->input('type');} - if($request->input('title', '') != ''){$data['title'] = $request->input('title');} - if($request->input('litpic', '') != ''){$data['litpic'] = $request->input('litpic');} - $data['add_time'] = time(); - $data['user_id'] = Token::$uid; - - if($data['des']=='') - { - return ReturnData::create(ReturnData::PARAMS_ERROR); - } + if(!checkIsNumber($request->input('id',null))){return ReturnData::create(ReturnData::PARAMS_ERROR);} + $id = $request->input('id'); + $where['id'] = $id; - $res = UserMessage::add($data); + $res = $this->getLogic()->getOne($where); if(!$res) { - return ReturnData::create(ReturnData::SYSTEM_FAIL); + return ReturnData::create(ReturnData::RECORD_NOT_EXIST); } return ReturnData::create(ReturnData::SUCCESS,$res); } - //修改用户消息 + //添加 + public function userMessageAdd(Request $request) + { + if(Helper::isPostRequest()) + { + $_POST['user_id'] = Token::$uid; + + return $this->getLogic()->add($_POST); + } + } + + //修改 public function userMessageUpdate(Request $request) - { - //参数 - if($request->input('des', '') != ''){$data['des'] = $request->input('des');} - if($request->input('type', '') != ''){$data['type'] = $request->input('type');} - if($request->input('title', '') != ''){$data['title'] = $request->input('title');} - if($request->input('litpic', '') != ''){$data['litpic'] = $request->input('litpic');} - if($request->input('status', '') != ''){$data['status'] = $request->input('status');} - - $where['id'] = $request->input('id'); - $where['user_id'] = Token::$uid; + { + if(!checkIsNumber($request->input('id',null))){return ReturnData::create(ReturnData::PARAMS_ERROR);} + $id = $request->input('id'); - $res = UserMessage::modify($where,$data); - if($res === false) - { - return ReturnData::create(ReturnData::SYSTEM_FAIL); - } + if(Helper::isPostRequest()) + { + unset($_POST['id']); + $where['id'] = $id; + $where['user_id'] = Token::$uid; + + return $this->getLogic()->edit($_POST,$where); + } + } + + //删除 + public function userMessageDelete(Request $request) + { + if(!checkIsNumber($request->input('id',null))){return ReturnData::create(ReturnData::PARAMS_ERROR);} + $id = $request->input('id'); - return ReturnData::create(ReturnData::SUCCESS,$res); + if(Helper::isPostRequest()) + { + $where['id'] = $id; + $where['user_id'] = Token::$uid; + + return $this->getLogic()->del($where); + } } } \ No newline at end of file diff --git a/app/Http/Controllers/Api/UserMoneyController.php b/app/Http/Controllers/Api/UserMoneyController.php index 8f30958..52eb87b 100644 --- a/app/Http/Controllers/Api/UserMoneyController.php +++ b/app/Http/Controllers/Api/UserMoneyController.php @@ -1,12 +1,15 @@ input('limit', 10); - $data['offset'] = $request->input('offset', 0); - if($request->input('type', null) !== null){$data['type'] = $request->input('type');} - $data['user_id'] = Token::$uid; + $limit = $request->input('limit', 10); + $offset = $request->input('offset', 0); + if($request->input('type', null) != null){$data['type'] = $request->input('type');} - $res = UserMoney::getList($data); - if(!$res) - { - return ReturnData::create(ReturnData::SYSTEM_FAIL); - } + $where['user_id'] = Token::$uid; + $res = $this->getLogic()->getList($where, array('id', 'desc'), '*', $offset, $limit); + return ReturnData::create(ReturnData::SUCCESS,$res); } - //添加余额明细 - public function userMoneyAdd(Request $request) + public function userMoneyDetail(Request $request) { //参数 - $data['type'] = $request->input('type',null); - $data['money'] = $request->input('money',null); - $data['des'] = $request->input('des',null); - if($request->input('user_money', null) !== null){$data['user_money'] = $request->input('user_money');} - $data['add_time'] = time(); - $data['user_id'] = Token::$uid; - - if($data['type']===null || $data['money']===null || $data['des']===null) - { - return ReturnData::create(ReturnData::PARAMS_ERROR); - } + if(!checkIsNumber($request->input('id',null))){return ReturnData::create(ReturnData::PARAMS_ERROR);} + $id = $request->input('id'); + $where['id'] = $id; - $res = UserMoney::add($data); + $res = $this->getLogic()->getOne($where); if(!$res) { - return ReturnData::create(ReturnData::SYSTEM_FAIL); + return ReturnData::create(ReturnData::RECORD_NOT_EXIST); } return ReturnData::create(ReturnData::SUCCESS,$res); } + + //添加 + public function userMoneyAdd(Request $request) + { + if(Helper::isPostRequest()) + { + $_POST['user_id'] = Token::$uid; + + return $this->getLogic()->add($_POST); + } + } + + //修改 + public function userMoneyUpdate(Request $request) + { + if(!checkIsNumber($request->input('id',null))){return ReturnData::create(ReturnData::PARAMS_ERROR);} + $id = $request->input('id'); + + if(Helper::isPostRequest()) + { + unset($_POST['id']); + $where['id'] = $id; + $where['user_id'] = Token::$uid; + + return $this->getLogic()->edit($_POST,$where); + } + } + + //删除 + public function userMoneyDelete(Request $request) + { + if(!checkIsNumber($request->input('id',null))){return ReturnData::create(ReturnData::PARAMS_ERROR);} + $id = $request->input('id'); + + if(Helper::isPostRequest()) + { + $where['id'] = $id; + $where['user_id'] = Token::$uid; + + return $this->getLogic()->del($where); + } + } } \ No newline at end of file diff --git a/app/Http/Controllers/Api/UserPointController.php b/app/Http/Controllers/Api/UserPointController.php index 7196312..7659847 100644 --- a/app/Http/Controllers/Api/UserPointController.php +++ b/app/Http/Controllers/Api/UserPointController.php @@ -1,11 +1,13 @@ input('limit', 10); - $data['offset'] = $request->input('offset', 0); - if($request->input('type', null) !== null){$data['type'] = $request->input('type');}; - $data['user_id'] = Token::$uid; + $limit = $request->input('limit', 10); + $offset = $request->input('offset', 0); + if($request->input('type', null) != null){$data['type'] = $request->input('type');} - $res = UserPoint::getList($data); - if(!$res) - { - return ReturnData::create(ReturnData::SYSTEM_FAIL); - } + $where['user_id'] = Token::$uid; + $res = $this->getLogic()->getList($where, array('id', 'desc'), '*', $offset, $limit); + return ReturnData::create(ReturnData::SUCCESS,$res); } - //添加积分明细 - public function userPointAdd(Request $request) + public function userPointDetail(Request $request) { //参数 - $data['type'] = $request->input('type',null); - $data['point'] = $request->input('point',null); - $data['des'] = $request->input('des',null); - if($request->input('user_point', null) !== null){$data['user_point'] = $request->input('user_point');} - $data['add_time'] = time(); - $data['user_id'] = Token::$uid; - - if($data['type']===null || $data['point']===null || $data['des']===null) - { - return ReturnData::create(ReturnData::PARAMS_ERROR); - } + if(!checkIsNumber($request->input('id',null))){return ReturnData::create(ReturnData::PARAMS_ERROR);} + $id = $request->input('id'); + $where['id'] = $id; - $res = UserPoint::add($data); + $res = $this->getLogic()->getOne($where); if(!$res) { - return ReturnData::create(ReturnData::SYSTEM_FAIL); + return ReturnData::create(ReturnData::RECORD_NOT_EXIST); } return ReturnData::create(ReturnData::SUCCESS,$res); } + + //添加 + public function userPointAdd(Request $request) + { + if(Helper::isPostRequest()) + { + $_POST['user_id'] = Token::$uid; + + return $this->getLogic()->add($_POST); + } + } + + //修改 + public function userPointUpdate(Request $request) + { + if(!checkIsNumber($request->input('id',null))){return ReturnData::create(ReturnData::PARAMS_ERROR);} + $id = $request->input('id'); + + if(Helper::isPostRequest()) + { + unset($_POST['id']); + $where['id'] = $id; + $where['user_id'] = Token::$uid; + + return $this->getLogic()->edit($_POST,$where); + } + } + + //删除 + public function userPointDelete(Request $request) + { + if(!checkIsNumber($request->input('id',null))){return ReturnData::create(ReturnData::PARAMS_ERROR);} + $id = $request->input('id'); + + if(Helper::isPostRequest()) + { + $where['id'] = $id; + $where['user_id'] = Token::$uid; + + return $this->getLogic()->del($where); + } + } } \ No newline at end of file diff --git a/app/Http/Controllers/Api/UserRechargeController.php b/app/Http/Controllers/Api/UserRechargeController.php index 8719de1..e2a6f74 100644 --- a/app/Http/Controllers/Api/UserRechargeController.php +++ b/app/Http/Controllers/Api/UserRechargeController.php @@ -1,11 +1,13 @@ input('limit', 10); - $data['offset'] = $request->input('offset', 0); - $data['status'] = $request->input('status', -1); - - $data['user_id'] = Token::$uid; - - $res = UserRecharge::getList($data); - if($res === false) - { - return ReturnData::create(ReturnData::SYSTEM_FAIL); - } + $limit = $request->input('limit', 10); + $offset = $request->input('offset', 0); + if($request->input('status', null) != null && $request->input('status')!=-1){$where['status'] = $request->input('status');} + $where['user_id'] = Token::$uid; + $res = $this->getLogic()->getList($where, array('id', 'desc'), '*', $offset, $limit); + return ReturnData::create(ReturnData::SUCCESS,$res); } - //获取一条用户充值 public function userRechargeDetail(Request $request) { //参数 - $data['id'] = $request->input('id', ''); - if($data['id']=='') - { - return ReturnData::create(ReturnData::PARAMS_ERROR); - } - $data['user_id'] = Token::$uid; + if(!checkIsNumber($request->input('id',null))){return ReturnData::create(ReturnData::PARAMS_ERROR);} + $id = $request->input('id'); + $where['id'] = $id; - $res = UserRecharge::getOne($data); - if($res === false) + $res = $this->getLogic()->getOne($where); + if(!$res) { - return ReturnData::create(ReturnData::SYSTEM_FAIL); + return ReturnData::create(ReturnData::RECORD_NOT_EXIST); } return ReturnData::create(ReturnData::SUCCESS,$res); } - //添加充值记录 + //添加 public function userRechargeAdd(Request $request) - { - //参数 - $data['money'] = $request->input('money',''); - $data['status'] = UserRecharge::UN_PAY; //0未处理,1已完成 - $data['pay_type'] = $request->input('pay_type',''); //充值类型:1微信,2支付宝 - $data['user_id'] = Token::$uid; - $data['created_at'] = time(); - - if($data['money']=='' || $data['pay_type']=='') - { - return ReturnData::create(ReturnData::PARAMS_ERROR); + { + if(Helper::isPostRequest()) + { + $_POST['user_id'] = Token::$uid; + + return $this->getLogic()->add($_POST); } - - $res = UserRecharge::add($data); - if($res === false) - { - return ReturnData::create(ReturnData::SYSTEM_FAIL); - } - - return ReturnData::create(ReturnData::SUCCESS,$res); } - //修改充值记录 + //修改 public function userRechargeUpdate(Request $request) - { - //参数 - $id = $request->input('id',''); - $data['trade_no'] = $request->input('trade_no',''); - $data['pay_time'] = $request->input('pay_time',''); - $data['status'] = UserRecharge::COMPLETE_PAY; - $data['updated_at'] = time(); + { + if(!checkIsNumber($request->input('id',null))){return ReturnData::create(ReturnData::PARAMS_ERROR);} + $id = $request->input('id'); - if($id=='' || $data['trade_no']=='' || $data['pay_time']=='') - { - return ReturnData::create(ReturnData::PARAMS_ERROR); + if(Helper::isPostRequest()) + { + unset($_POST['id']); + $where['id'] = $id; + $where['user_id'] = Token::$uid; + + return $this->getLogic()->edit($_POST,$where); } + } + + //删除 + public function userRechargeDelete(Request $request) + { + if(!checkIsNumber($request->input('id',null))){return ReturnData::create(ReturnData::PARAMS_ERROR);} + $id = $request->input('id'); - $res = UserRecharge::modify(array('id'=>$id,'user_id'=>Token::$uid),$data); - if($res === false) - { - return ReturnData::create(ReturnData::SYSTEM_FAIL); - } - - return ReturnData::create(ReturnData::SUCCESS); + if(Helper::isPostRequest()) + { + $where['id'] = $id; + $where['user_id'] = Token::$uid; + + return $this->getLogic()->del($where); + } } } \ No newline at end of file diff --git a/app/Http/Controllers/Api/UserWithdrawController.php b/app/Http/Controllers/Api/UserWithdrawController.php index 480b36a..4398889 100644 --- a/app/Http/Controllers/Api/UserWithdrawController.php +++ b/app/Http/Controllers/Api/UserWithdrawController.php @@ -1,11 +1,13 @@ input('limit', 10); + $offset = $request->input('offset', 0); + if($request->input('status', null) != null){$where['status'] = $request->input('status');} + if($request->input('method', null) != null){$where['method'] = $request->input('method');} + $where['delete_time'] = UserWithdraw::UN_DELETE; + $where['user_id'] = Token::$uid; + + $res = $this->getLogic()->getList($where, array('id', 'desc'), '*', $offset, $limit); + + return ReturnData::create(ReturnData::SUCCESS,$res); + } + + public function userWithdrawDetail(Request $request) + { + //参数 + if(!checkIsNumber($request->input('id',null))){return ReturnData::create(ReturnData::PARAMS_ERROR);} + $id = $request->input('id'); + $where['id'] = $id; + $where['delete_time'] = UserWithdraw::UN_DELETE; + + $res = $this->getLogic()->getOne($where); + if(!$res) + { + return ReturnData::create(ReturnData::RECORD_NOT_EXIST); + } + + return ReturnData::create(ReturnData::SUCCESS,$res); + } + + //添加 + public function userWithdrawAdd(Request $request) + { + if(Helper::isPostRequest()) + { + $_POST['user_id'] = Token::$uid; + + return $this->getLogic()->add($_POST); + } + } + + //修改 + public function userWithdrawUpdate(Request $request) + { + if(!checkIsNumber($request->input('id',null))){return ReturnData::create(ReturnData::PARAMS_ERROR);} + $id = $request->input('id'); + + if(Helper::isPostRequest()) + { + unset($_POST['id']); + $where['id'] = $id; + $where['user_id'] = Token::$uid; + $where['delete_time'] = UserWithdraw::UN_DELETE; + + return $this->getLogic()->edit($_POST,$where); + } + } + + //删除 + public function userWithdrawDelete(Request $request) + { + if(!checkIsNumber($request->input('id',null))){return ReturnData::create(ReturnData::PARAMS_ERROR);} + $id = $request->input('id'); + + if(Helper::isPostRequest()) + { + $where['id'] = $id; + $where['user_id'] = Token::$uid; + + return $this->getLogic()->del($where); + } + } + + + + + + + + + + + + + + + /* //用户提现列表 public function userWithdrawList(Request $request) { //参数 @@ -91,20 +186,5 @@ class UserWithdrawController extends CommonController } return ReturnData::create(ReturnData::SUCCESS,$res); - } - - //删除一条提现 - public function userWithdrawDelete(Request $request) - { - //参数 - $id = $request->input('id',null); - - $res = UserWithdraw::remove($id,Token::$uid); - if($res === false) - { - return ReturnData::create(ReturnData::SYSTEM_FAIL); - } - - return ReturnData::create(ReturnData::SUCCESS,$res); - } + } */ } \ No newline at end of file diff --git a/app/Http/Controllers/Weixin/UserController.php b/app/Http/Controllers/Weixin/UserController.php index ca0184d..c4dc945 100644 --- a/app/Http/Controllers/Weixin/UserController.php +++ b/app/Http/Controllers/Weixin/UserController.php @@ -572,7 +572,7 @@ class UserController extends CommonController 'nickname' => $_SESSION['weixin_oauth']['userinfo']['nickname'], 'sex' => $_SESSION['weixin_oauth']['userinfo']['sex'], 'head_img' => $_SESSION['weixin_oauth']['userinfo']['headimgurl'], - 'parent_id' => isset($_SESSION['weixin_user_invite_code']) ? $_SESSION['weixin_user_invite_code'] : '', + 'parent_id' => isset($_SESSION['weixin_user_invite_code']) ? $_SESSION['weixin_user_invite_code'] : 0, 'parent_mobile' => '', 'mobile' => '' ); diff --git a/app/Http/Logic/ArctypeLogic.php b/app/Http/Logic/ArctypeLogic.php index cd6a38c..0afb186 100644 --- a/app/Http/Logic/ArctypeLogic.php +++ b/app/Http/Logic/ArctypeLogic.php @@ -84,9 +84,9 @@ class ArctypeLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->add($data,$type); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //修改 @@ -98,9 +98,9 @@ class ArctypeLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->edit($data,$where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //删除 @@ -112,9 +112,9 @@ class ArctypeLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->del($where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } /** diff --git a/app/Http/Logic/ArticleLogic.php b/app/Http/Logic/ArticleLogic.php index e7b28a0..afbf39f 100644 --- a/app/Http/Logic/ArticleLogic.php +++ b/app/Http/Logic/ArticleLogic.php @@ -92,9 +92,9 @@ class ArticleLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->add($data,$type); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //修改 @@ -106,9 +106,9 @@ class ArticleLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->edit($data,$where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //删除 @@ -120,9 +120,9 @@ class ArticleLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->del($where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } /** diff --git a/app/Http/Logic/BonusLogic.php b/app/Http/Logic/BonusLogic.php index b1e1560..e84fd41 100644 --- a/app/Http/Logic/BonusLogic.php +++ b/app/Http/Logic/BonusLogic.php @@ -1,5 +1,6 @@ getModel()->add($data,$type); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //修改 @@ -107,9 +108,9 @@ class BonusLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->edit($data,$where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //删除 @@ -121,9 +122,9 @@ class BonusLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->edit(['delete_time'=>time()],$where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } /** diff --git a/app/Http/Logic/CartLogic.php b/app/Http/Logic/CartLogic.php index 9728ff0..1b74718 100644 --- a/app/Http/Logic/CartLogic.php +++ b/app/Http/Logic/CartLogic.php @@ -161,7 +161,7 @@ class CartLogic extends BaseLogic if(isset($cart_id) && $cart_id){return ReturnData::create(ReturnData::SUCCESS,$cart_id,'购物车添加成功');} - return ReturnData::create(ReturnData::PARAMS_ERROR,null,'系统错误'); + return ReturnData::create(ReturnData::SYSTEM_FAIL); } //修改 @@ -173,9 +173,9 @@ class CartLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->edit($data,$where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //删除 @@ -184,9 +184,9 @@ class CartLogic extends BaseLogic if(empty($where)){return ReturnData::create(ReturnData::PARAMS_ERROR);} $res = $this->getModel()->del($where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } /** diff --git a/app/Http/Logic/CollectGoodsLogic.php b/app/Http/Logic/CollectGoodsLogic.php index 6f04c63..87488de 100644 --- a/app/Http/Logic/CollectGoodsLogic.php +++ b/app/Http/Logic/CollectGoodsLogic.php @@ -91,9 +91,9 @@ class CollectGoodsLogic extends BaseLogic if($this->getModel()->getOne(array('user_id'=>$data['user_id'],'goods_id'=>$data['goods_id']))){return '亲,您已经收藏啦!';} $res = $this->getModel()->add($data,$type); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //修改 @@ -105,9 +105,9 @@ class CollectGoodsLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->edit($data,$where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //删除 @@ -121,9 +121,9 @@ class CollectGoodsLogic extends BaseLogic if(!$this->getModel()->getOne(array('user_id'=>$where['user_id'],'goods_id'=>$where['goods_id']))){return '商品未收藏';} $res = $this->getModel()->del($where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } /** diff --git a/app/Http/Logic/CommentLogic.php b/app/Http/Logic/CommentLogic.php index fde3d58..5837212 100644 --- a/app/Http/Logic/CommentLogic.php +++ b/app/Http/Logic/CommentLogic.php @@ -84,9 +84,9 @@ class CommentLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->add($data,$type); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //修改 @@ -98,9 +98,9 @@ class CommentLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->edit($data,$where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //删除 @@ -112,9 +112,9 @@ class CommentLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->del($where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } /** diff --git a/app/Http/Logic/FeedbackLogic.php b/app/Http/Logic/FeedbackLogic.php index 635c9eb..2111b72 100644 --- a/app/Http/Logic/FeedbackLogic.php +++ b/app/Http/Logic/FeedbackLogic.php @@ -84,9 +84,9 @@ class FeedBackLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->add($data,$type); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //修改 @@ -98,9 +98,9 @@ class FeedBackLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->edit($data,$where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //删除 @@ -112,9 +112,9 @@ class FeedBackLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->del($where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } /** diff --git a/app/Http/Logic/FriendlinkLogic.php b/app/Http/Logic/FriendlinkLogic.php index 22456ab..f522768 100644 --- a/app/Http/Logic/FriendlinkLogic.php +++ b/app/Http/Logic/FriendlinkLogic.php @@ -84,9 +84,9 @@ class FriendlinkLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->add($data,$type); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //修改 @@ -98,9 +98,9 @@ class FriendlinkLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->edit($data,$where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //删除 @@ -112,9 +112,9 @@ class FriendlinkLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->del($where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } /** diff --git a/app/Http/Logic/GoodsBrandLogic.php b/app/Http/Logic/GoodsBrandLogic.php index 8a0393b..8df75c2 100644 --- a/app/Http/Logic/GoodsBrandLogic.php +++ b/app/Http/Logic/GoodsBrandLogic.php @@ -84,9 +84,9 @@ class GoodsBrandLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->add($data,$type); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //修改 @@ -98,9 +98,9 @@ class GoodsBrandLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->edit($data,$where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //删除 @@ -112,9 +112,9 @@ class GoodsBrandLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->del($where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } /** diff --git a/app/Http/Logic/GoodsImgLogic.php b/app/Http/Logic/GoodsImgLogic.php index 3bd772e..543f053 100644 --- a/app/Http/Logic/GoodsImgLogic.php +++ b/app/Http/Logic/GoodsImgLogic.php @@ -84,9 +84,9 @@ class GoodsImgLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->add($data,$type); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //修改 @@ -98,9 +98,9 @@ class GoodsImgLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->edit($data,$where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //删除 @@ -112,9 +112,9 @@ class GoodsImgLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->del($where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } /** diff --git a/app/Http/Logic/GoodsLogic.php b/app/Http/Logic/GoodsLogic.php index a12800b..3d2b60a 100644 --- a/app/Http/Logic/GoodsLogic.php +++ b/app/Http/Logic/GoodsLogic.php @@ -101,9 +101,9 @@ class GoodsLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->add($data,$type); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //修改 @@ -115,9 +115,9 @@ class GoodsLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->edit($data,$where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //删除 @@ -129,9 +129,9 @@ class GoodsLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->del($where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } /** diff --git a/app/Http/Logic/GoodsSearchwordLogic.php b/app/Http/Logic/GoodsSearchwordLogic.php index b9ab508..0545bff 100644 --- a/app/Http/Logic/GoodsSearchwordLogic.php +++ b/app/Http/Logic/GoodsSearchwordLogic.php @@ -84,9 +84,9 @@ class GoodsSearchwordLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->add($data,$type); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //修改 @@ -98,9 +98,9 @@ class GoodsSearchwordLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->edit($data,$where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //删除 @@ -112,9 +112,9 @@ class GoodsSearchwordLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->del($where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } /** diff --git a/app/Http/Logic/GoodsTypeLogic.php b/app/Http/Logic/GoodsTypeLogic.php index 14c9fea..428a2c7 100644 --- a/app/Http/Logic/GoodsTypeLogic.php +++ b/app/Http/Logic/GoodsTypeLogic.php @@ -84,9 +84,9 @@ class GoodsTypeLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->add($data,$type); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //修改 @@ -98,9 +98,9 @@ class GoodsTypeLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->edit($data,$where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //删除 @@ -112,9 +112,9 @@ class GoodsTypeLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->del($where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } /** diff --git a/app/Http/Logic/GuestbookLogic.php b/app/Http/Logic/GuestbookLogic.php index b41003c..b63fc2e 100644 --- a/app/Http/Logic/GuestbookLogic.php +++ b/app/Http/Logic/GuestbookLogic.php @@ -84,9 +84,9 @@ class GuestbookLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->add($data,$type); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //修改 @@ -98,9 +98,9 @@ class GuestbookLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->edit($data,$where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //删除 @@ -112,9 +112,9 @@ class GuestbookLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->del($where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } /** diff --git a/app/Http/Logic/KeywordLogic.php b/app/Http/Logic/KeywordLogic.php index dd0ce9b..2f03558 100644 --- a/app/Http/Logic/KeywordLogic.php +++ b/app/Http/Logic/KeywordLogic.php @@ -84,9 +84,9 @@ class KeywordLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->add($data,$type); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //修改 @@ -98,9 +98,9 @@ class KeywordLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->edit($data,$where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //删除 @@ -112,9 +112,9 @@ class KeywordLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->del($where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } /** diff --git a/app/Http/Logic/KuaidiLogic.php b/app/Http/Logic/KuaidiLogic.php index 506b8a8..4b4ac40 100644 --- a/app/Http/Logic/KuaidiLogic.php +++ b/app/Http/Logic/KuaidiLogic.php @@ -84,9 +84,9 @@ class KuaidiLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->add($data,$type); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //修改 @@ -98,9 +98,9 @@ class KuaidiLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->edit($data,$where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //删除 @@ -112,9 +112,9 @@ class KuaidiLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->del($where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } /** diff --git a/app/Http/Logic/MenuLogic.php b/app/Http/Logic/MenuLogic.php index 4420f0f..34b5b36 100644 --- a/app/Http/Logic/MenuLogic.php +++ b/app/Http/Logic/MenuLogic.php @@ -84,9 +84,9 @@ class MenuLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->add($data,$type); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //修改 @@ -98,9 +98,9 @@ class MenuLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->edit($data,$where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //删除 @@ -112,9 +112,9 @@ class MenuLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->del($where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } /** diff --git a/app/Http/Logic/OrderGoodsLogic.php b/app/Http/Logic/OrderGoodsLogic.php index 62f7048..e508f28 100644 --- a/app/Http/Logic/OrderGoodsLogic.php +++ b/app/Http/Logic/OrderGoodsLogic.php @@ -84,9 +84,9 @@ class OrderGoodsLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->add($data,$type); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //修改 @@ -98,9 +98,9 @@ class OrderGoodsLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->edit($data,$where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //删除 @@ -112,9 +112,9 @@ class OrderGoodsLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->del($where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } /** diff --git a/app/Http/Logic/OrderLogic.php b/app/Http/Logic/OrderLogic.php index 2ba9819..6ae7a3d 100644 --- a/app/Http/Logic/OrderLogic.php +++ b/app/Http/Logic/OrderLogic.php @@ -84,9 +84,9 @@ class OrderLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->add($data,$type); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //修改 @@ -98,9 +98,9 @@ class OrderLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->edit($data,$where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //删除 @@ -112,9 +112,9 @@ class OrderLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->del($where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } /** diff --git a/app/Http/Logic/PageLogic.php b/app/Http/Logic/PageLogic.php index fe20f76..400c34a 100644 --- a/app/Http/Logic/PageLogic.php +++ b/app/Http/Logic/PageLogic.php @@ -84,9 +84,9 @@ class PageLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->add($data,$type); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //修改 @@ -98,9 +98,9 @@ class PageLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->edit($data,$where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //删除 @@ -112,9 +112,9 @@ class PageLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->del($where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } /** diff --git a/app/Http/Logic/PaymentLogic.php b/app/Http/Logic/PaymentLogic.php index 69b2b58..3d5b271 100644 --- a/app/Http/Logic/PaymentLogic.php +++ b/app/Http/Logic/PaymentLogic.php @@ -84,9 +84,9 @@ class PaymentLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->add($data,$type); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //修改 @@ -98,9 +98,9 @@ class PaymentLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->edit($data,$where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //删除 @@ -112,9 +112,9 @@ class PaymentLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->del($where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } /** diff --git a/app/Http/Logic/RegionLogic.php b/app/Http/Logic/RegionLogic.php index 32d46be..6f91c39 100644 --- a/app/Http/Logic/RegionLogic.php +++ b/app/Http/Logic/RegionLogic.php @@ -84,9 +84,9 @@ class RegionLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->add($data,$type); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //修改 @@ -98,9 +98,9 @@ class RegionLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->edit($data,$where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //删除 @@ -112,9 +112,9 @@ class RegionLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->del($where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } /** diff --git a/app/Http/Logic/SearchwordLogic.php b/app/Http/Logic/SearchwordLogic.php index 2d65cad..a102a1b 100644 --- a/app/Http/Logic/SearchwordLogic.php +++ b/app/Http/Logic/SearchwordLogic.php @@ -84,9 +84,9 @@ class SearchwordLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->add($data,$type); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //修改 @@ -98,9 +98,9 @@ class SearchwordLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->edit($data,$where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //删除 @@ -112,9 +112,9 @@ class SearchwordLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->del($where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } /** diff --git a/app/Http/Logic/SlideLogic.php b/app/Http/Logic/SlideLogic.php index d83f309..f2a5731 100644 --- a/app/Http/Logic/SlideLogic.php +++ b/app/Http/Logic/SlideLogic.php @@ -84,9 +84,9 @@ class SlideLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->add($data,$type); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //修改 @@ -98,9 +98,9 @@ class SlideLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->edit($data,$where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //删除 @@ -112,9 +112,9 @@ class SlideLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->del($where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } /** diff --git a/app/Http/Logic/SmsLogLogic.php b/app/Http/Logic/SmsLogLogic.php index 743cd46..ea4f2b8 100644 --- a/app/Http/Logic/SmsLogLogic.php +++ b/app/Http/Logic/SmsLogLogic.php @@ -84,9 +84,9 @@ class SmsLogLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->add($data,$type); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //修改 @@ -98,9 +98,9 @@ class SmsLogLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->edit($data,$where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //删除 @@ -112,9 +112,9 @@ class SmsLogLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->del($where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } /** diff --git a/app/Http/Logic/SysconfigLogic.php b/app/Http/Logic/SysconfigLogic.php index 0c77008..6e47236 100644 --- a/app/Http/Logic/SysconfigLogic.php +++ b/app/Http/Logic/SysconfigLogic.php @@ -84,9 +84,9 @@ class SysconfigLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->add($data,$type); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //修改 @@ -98,9 +98,9 @@ class SysconfigLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->edit($data,$where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //删除 @@ -112,9 +112,9 @@ class SysconfigLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->del($where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } /** diff --git a/app/Http/Logic/TagindexLogic.php b/app/Http/Logic/TagindexLogic.php index 3a93f2a..180b068 100644 --- a/app/Http/Logic/TagindexLogic.php +++ b/app/Http/Logic/TagindexLogic.php @@ -84,9 +84,9 @@ class TagindexLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->add($data,$type); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //修改 @@ -98,9 +98,9 @@ class TagindexLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->edit($data,$where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //删除 @@ -112,9 +112,9 @@ class TagindexLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->del($where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } /** diff --git a/app/Http/Logic/TaglistLogic.php b/app/Http/Logic/TaglistLogic.php index 59dfe6c..73dfb30 100644 --- a/app/Http/Logic/TaglistLogic.php +++ b/app/Http/Logic/TaglistLogic.php @@ -84,9 +84,9 @@ class TaglistLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->add($data,$type); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //修改 @@ -98,9 +98,9 @@ class TaglistLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->edit($data,$where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //删除 @@ -112,9 +112,9 @@ class TaglistLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->del($where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } /** diff --git a/app/Http/Logic/TokenLogic.php b/app/Http/Logic/TokenLogic.php index 946ec7a..c9ab768 100644 --- a/app/Http/Logic/TokenLogic.php +++ b/app/Http/Logic/TokenLogic.php @@ -84,9 +84,9 @@ class TokenLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->add($data,$type); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //修改 @@ -98,9 +98,9 @@ class TokenLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->edit($data,$where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //删除 @@ -112,9 +112,9 @@ class TokenLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->del($where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } /** diff --git a/app/Http/Logic/UserAddressLogic.php b/app/Http/Logic/UserAddressLogic.php index c3d8958..f764223 100644 --- a/app/Http/Logic/UserAddressLogic.php +++ b/app/Http/Logic/UserAddressLogic.php @@ -84,9 +84,9 @@ class UserAddressLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->add($data,$type); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //修改 @@ -98,9 +98,9 @@ class UserAddressLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->edit($data,$where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //删除 @@ -112,9 +112,9 @@ class UserAddressLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->del($where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } /** diff --git a/app/Http/Logic/UserBonusLogic.php b/app/Http/Logic/UserBonusLogic.php index 4fb8f27..2f49bd3 100644 --- a/app/Http/Logic/UserBonusLogic.php +++ b/app/Http/Logic/UserBonusLogic.php @@ -84,9 +84,9 @@ class UserBonusLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->add($data,$type); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //修改 @@ -98,9 +98,9 @@ class UserBonusLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->edit($data,$where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //删除 @@ -112,9 +112,9 @@ class UserBonusLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->del($where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } /** diff --git a/app/Http/Logic/UserGoodsHistoryLogic.php b/app/Http/Logic/UserGoodsHistoryLogic.php index f7e8b27..1d229b9 100644 --- a/app/Http/Logic/UserGoodsHistoryLogic.php +++ b/app/Http/Logic/UserGoodsHistoryLogic.php @@ -34,6 +34,9 @@ class UserGoodsHistoryLogic extends BaseLogic foreach($res['list'] as $k=>$v) { $res['list'][$k] = $this->getDataView($v); + + $goods = logic('Goods')->getOne(array('id'=>$v->goods_id),array('id', 'typeid', 'tuijian', 'click', 'title', 'sn', 'price','litpic', 'pubdate', 'add_time', 'market_price', 'goods_number', 'sale', 'comments','promote_start_date','promote_price','promote_end_date','goods_img','spec','point')); + $res['list'][$k]->goods = $goods; } } @@ -83,10 +86,14 @@ class UserGoodsHistoryLogic extends BaseLogic $validator = $this->getValidate($data, 'add'); if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} + if($this->getModel()->getOne(['goods_id'=>$data['goods_id'],'user_id'=>$data['user_id']])){return ReturnData::create(ReturnData::PARAMS_ERROR,null,'亲,已经添加了');} + + $data['add_time'] = time(); + $res = $this->getModel()->add($data,$type); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //修改 @@ -98,9 +105,9 @@ class UserGoodsHistoryLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->edit($data,$where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //删除 @@ -108,13 +115,13 @@ class UserGoodsHistoryLogic extends BaseLogic { if(empty($where)){return ReturnData::create(ReturnData::PARAMS_ERROR);} - $validator = $this->getValidate($where,'del'); - if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} + //$validator = $this->getValidate($where,'del'); + //if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->del($where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } /** diff --git a/app/Http/Logic/UserLogic.php b/app/Http/Logic/UserLogic.php index ab1de1e..c895b7e 100644 --- a/app/Http/Logic/UserLogic.php +++ b/app/Http/Logic/UserLogic.php @@ -1,6 +1,7 @@ getDataView($res); $res->reciever_address = model('UserAddress')->getOne(['id'=>$res->address_id]); - $res->collect_goods_count = model('CollectGoods')->getDb()->where(['user_id'=>$where['id']])->count(); - $res->bonus_count = model('UserBonus')->getDb()->where(array('user_id'=>$where['id'],'status'=>0))->count(); + $res->collect_goods_count = model('CollectGoods')->getDb()->where(['user_id'=>$res->id])->count(); + $res->bonus_count = model('UserBonus')->getDb()->where(array('user_id'=>$res->id,'status'=>0))->count(); return $res; } @@ -90,9 +91,9 @@ class UserLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->add($data,$type); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //修改 @@ -104,9 +105,9 @@ class UserLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->edit($data,$where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //删除 @@ -118,9 +119,9 @@ class UserLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->del($where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } /** @@ -133,11 +134,100 @@ class UserLogic extends BaseLogic return getDataAttr($this->getModel(),$data); } - //获取用户信息 - public function getUserInfo($user_id) + //修改用户密码、支付密码 + public function userPasswordUpdate($data, $where = array()) + { + if(empty($data)){return ReturnData::create(ReturnData::SUCCESS);} + + $user = $this->getModel()->getOne($where); + if(!$user){return ReturnData::create(ReturnData::PARAMS_ERROR, null, '用户不存在');} + + //密码 + if(isset($data['old_password'])) + { + if($user->password && $data['old_password']!=$user->password) + { + return ReturnData::create(ReturnData::PARAMS_ERROR, null, '旧密码错误'); + } + } + + //支付密码 + if(isset($data['pay_password'])) + { + if($user->pay_password && $data['old_pay_password']!=$user->pay_password) + { + return ReturnData::create(ReturnData::PARAMS_ERROR, null, '旧支付密码错误'); + } + } + + $res = $this->getModel()->edit($data,$where); + if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + + return ReturnData::create(ReturnData::SUCCESS,$res); + } + + //签到 + public function signin($where) + { + $user = $this->getModel()->getOne($where); + if(!$user){return ReturnData::create(ReturnData::PARAMS_ERROR, null, '用户不存在');} + + $signin_time=''; + if(!empty($user->signin_time)){$signin_time = date('Ymd',strtotime($user->signin_time));} //签到时间 + + $today = date('Ymd',time()); //今日日期 + + if($signin_time==$today){return ReturnData::create(ReturnData::PARAMS_ERROR, null, '今日已签到');} + + $signin_point = (int)sysconfig('CMS_SIGN_POINT'); //签到积分 + $this->getModel()->edit(['point'=>($user->point+$signin_point),'signin_time'=>date('Y-m-d H:i:s')], ['id'=>$user->id]); //更新用户积分,及签到时间 + model('UserPoint')->add(['type'=>1,'point'=>$signin_point,'des'=>'签到','user_id'=>$user->id]); //添加签到积分记录 + + return ReturnData::create(ReturnData::SUCCESS, null, '签到成功'); + } + + //用户登录 + public function wxLogin($where) { - $user = self::where('id', $user_id)->first(); - if(!$user){return false;} + if(isset($where['openid']) && !empty($where['openid'])) + { + $user = $this->getOne(array('openid'=>$where['openid'])); + } + elseif(isset($where['user_name']) && !empty($where['user_name'])) + { + $user = $this->getOne(function ($query) use ($where) {$query->where(['mobile'=>$where['user_name'],'password'=>$where['password']])->orWhere(['user_name'=>$where['user_name'],'password'=>$where['password']]);}); + } + + if(isset($user) && !$user){return ReturnData::create(ReturnData::PARAMS_ERROR, null, '用户不存在或者账号密码错误');} + + $token = Token::getToken(Token::TYPE_WEIXIN, $user->id); + + foreach($token as $k=>$v) + { + $user->$k = $v; + } + return ReturnData::create(ReturnData::SUCCESS, $user, '登录成功'); } + + //注册 + public function wxRegister($data) + { + if(empty($data)){return ReturnData::create(ReturnData::PARAMS_ERROR);} + + $data['add_time'] = time(); + + $validator = $this->getValidate($data, 'wx_register'); + if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} + + $res = $this->getModel()->add($data); + if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + + //生成token + $token = Token::getToken(Token::TYPE_WEIXIN, $res); + + return ReturnData::create(ReturnData::SUCCESS,$token, '注册成功'); + } + + } \ No newline at end of file diff --git a/app/Http/Logic/UserMessageLogic.php b/app/Http/Logic/UserMessageLogic.php index ee517d4..335a37d 100644 --- a/app/Http/Logic/UserMessageLogic.php +++ b/app/Http/Logic/UserMessageLogic.php @@ -83,10 +83,12 @@ class UserMessageLogic extends BaseLogic $validator = $this->getValidate($data, 'add'); if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} + $data['add_time'] = time(); + $res = $this->getModel()->add($data,$type); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //修改 @@ -98,9 +100,9 @@ class UserMessageLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->edit($data,$where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //删除 @@ -112,9 +114,9 @@ class UserMessageLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->del($where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } /** diff --git a/app/Http/Logic/UserMoneyLogic.php b/app/Http/Logic/UserMoneyLogic.php index 350d3c4..d34fa28 100644 --- a/app/Http/Logic/UserMoneyLogic.php +++ b/app/Http/Logic/UserMoneyLogic.php @@ -1,5 +1,6 @@ getValidate($data, 'add'); if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} + if($data['money']<=0){return ReturnData::create(ReturnData::PARAMS_ERROR);} + + $data['add_time'] = time(); + + DB::beginTransaction(); //启动事务 + + if($data['type'] == UserMoney::USER_MONEY_INCREMENT) + { + //增加用户余额 + model('User')->getDb()->where(array('id'=>$data['user_id']))->increment('money', $data['money']); + } + elseif($data['type'] == UserMoney::USER_MONEY_DECREMENT) + { + //减少用户余额 + model('User')->getDb()->where(array('id'=>$data['user_id']))->decrement('money', $data['money']); + } + else + { + DB::rollBack(); //事务回滚 + return ReturnData::create(ReturnData::FAIL); + } + + $user_money = model('User')->getDb()->where(array('id'=>$data['user_id']))->value('money'); //用户余额 + $data['user_money'] = $user_money; + $res = $this->getModel()->add($data,$type); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res) + { + DB::commit(); //事务提交 + return ReturnData::create(ReturnData::SUCCESS,$res); + } - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //修改 @@ -98,9 +135,9 @@ class UserMoneyLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->edit($data,$where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //删除 @@ -112,9 +149,9 @@ class UserMoneyLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->del($where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } /** diff --git a/app/Http/Logic/UserPointLogic.php b/app/Http/Logic/UserPointLogic.php index 4707f56..28b535d 100644 --- a/app/Http/Logic/UserPointLogic.php +++ b/app/Http/Logic/UserPointLogic.php @@ -1,5 +1,6 @@ getValidate($data, 'add'); if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} + if($data['point']<=0){return ReturnData::create(ReturnData::PARAMS_ERROR);} + + $data['add_time'] = time(); + + DB::beginTransaction(); //启动事务 + + if($data['type'] == UserPoint::USER_POINT_INCREMENT) + { + //增加用户余额 + model('User')->getDb()->where(array('id'=>$data['user_id']))->increment('point', $data['point']); + } + elseif($data['type'] == UserPoint::USER_POINT_DECREMENT) + { + //减少用户余额 + model('User')->getDb()->where(array('id'=>$data['user_id']))->decrement('point', $data['point']); + } + else + { + DB::rollBack(); //事务回滚 + return ReturnData::create(ReturnData::FAIL); + } + + $user_point = model('User')->getDb()->where(array('id'=>$data['user_id']))->value('point'); //用户余额 + $data['user_point'] = $user_point; + $res = $this->getModel()->add($data,$type); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res) + { + DB::commit(); //事务提交 + return ReturnData::create(ReturnData::SUCCESS,$res); + } - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //修改 @@ -98,9 +135,9 @@ class UserPointLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->edit($data,$where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //删除 @@ -112,9 +149,9 @@ class UserPointLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->del($where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } /** diff --git a/app/Http/Logic/UserRechargeLogic.php b/app/Http/Logic/UserRechargeLogic.php index 992950f..f798930 100644 --- a/app/Http/Logic/UserRechargeLogic.php +++ b/app/Http/Logic/UserRechargeLogic.php @@ -2,6 +2,7 @@ namespace App\Http\Logic; use App\Common\ReturnData; use App\Http\Model\UserRecharge; +use App\Http\Model\UserMoney; use App\Http\Requests\UserRechargeRequest; use Validator; @@ -80,13 +81,16 @@ class UserRechargeLogic extends BaseLogic { if(empty($data)){return ReturnData::create(ReturnData::PARAMS_ERROR);} + $data['recharge_sn'] = date('YmdHis').rand(1000,9999); + $data['created_at'] = time(); + $validator = $this->getValidate($data, 'add'); if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->add($data,$type); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //修改 @@ -98,9 +102,9 @@ class UserRechargeLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->edit($data,$where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //删除 @@ -112,9 +116,9 @@ class UserRechargeLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->del($where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } /** @@ -126,4 +130,42 @@ class UserRechargeLogic extends BaseLogic { return getDataAttr($this->getModel(),$data); } + + /** + * 充值成功之后修改记录信息,回调信息 + * @param int $data['pay_time'] 实际充值时间 + * @param int $data['pay_type'] 充值类型:1微信,2支付宝 + * @param float $data['pay_money'] 充值金额 + * @param string $data['trade_no'] 支付流水号 + * @return array + */ + public function paySuccessChangeRechargeInfo($data, $where) + { + if(empty($where) || empty($data)){return ReturnData::create(ReturnData::PARAMS_ERROR);} + + $user_recharge = $this->getModel()->getOne($where); + if(!$user_recharge){return false;} + + DB::beginTransaction(); + + $data['updated_at'] = time(); + $data['status'] = UserRecharge::COMPLETE_PAY; + $res = $this->getModel()->edit($data,$where); + if($res) + { + //添加用户余额记录并增加用户余额 + $user_money_data['user_id'] = $user_recharge->user_id; + $user_money_data['type'] = UserMoney::USER_MONEY_INCREMENT; + $user_money_data['money'] = $data['pay_money']; + $user_money_data['des'] = UserRecharge::USER_RECHARGE_DES; + $user_money = logic('UserMoney')->add($user_money_data); + if($user_money['code'] != ReturnData::SUCCESS){DB::rollBack();return false;} + + DB::commit(); + return true; + } + + DB::rollBack(); + return false; + } } \ No newline at end of file diff --git a/app/Http/Logic/UserRoleLogic.php b/app/Http/Logic/UserRoleLogic.php index c3d3d6d..be7d4af 100644 --- a/app/Http/Logic/UserRoleLogic.php +++ b/app/Http/Logic/UserRoleLogic.php @@ -84,9 +84,9 @@ class UserRoleLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->add($data,$type); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //修改 @@ -98,9 +98,9 @@ class UserRoleLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->edit($data,$where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //删除 @@ -112,9 +112,9 @@ class UserRoleLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->del($where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } /** diff --git a/app/Http/Logic/UserWithdrawLogic.php b/app/Http/Logic/UserWithdrawLogic.php index ade3792..72de749 100644 --- a/app/Http/Logic/UserWithdrawLogic.php +++ b/app/Http/Logic/UserWithdrawLogic.php @@ -1,6 +1,8 @@ getValidate($data, 'add'); if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} + if(isset($data['pay_password']) && !empty($data['pay_password'])){}else{return ReturnData::create(ReturnData::PARAMS_ERROR,null,'请输入支付密码');} + + $user = model('User')->getOne(array('id'=>$data['user_id'],'pay_password'=>$data['pay_password'])); + if(!$user){return ReturnData::create(ReturnData::PARAMS_ERROR,null,'支付密码错误');} + unset($data['pay_password']); + + $min_withdraw_money = sysconfig('CMS_MIN_WITHDRAWAL_MONEY'); //最低可提现金额 + if($user->money<$data['money']){return ReturnData::create(ReturnData::PARAMS_ERROR,null,'余额不足');} + if($user->money<$min_withdraw_money){return ReturnData::create(ReturnData::PARAMS_ERROR,null,'用户金额小于最小提现金额');} + if($data['money']<$min_withdraw_money){return ReturnData::create(ReturnData::PARAMS_ERROR,null,'提现金额不得小于最小提现金额');} + + DB::beginTransaction(); + + $data['add_time'] = time(); $res = $this->getModel()->add($data,$type); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res) + { + //添加用户余额记录并扣除用户余额 + $user_money_data['user_id'] = $data['user_id']; + $user_money_data['type'] = UserMoney::USER_MONEY_DECREMENT; + $user_money_data['money'] = $data['money']; + $user_money_data['des'] = UserWithdraw::USER_WITHDRAW_DES; + $user_money = logic('UserMoney')->add($user_money_data); + if($user_money['code'] != ReturnData::SUCCESS){DB::rollBack();return false;} + + DB::commit(); + return ReturnData::create(ReturnData::SUCCESS,$res); + } - return ReturnData::create(ReturnData::SUCCESS,$res); + DB::rollBack(); + return ReturnData::create(ReturnData::FAIL); } //修改 @@ -98,9 +127,9 @@ class UserWithdrawLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->edit($data,$where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //删除 @@ -111,10 +140,10 @@ class UserWithdrawLogic extends BaseLogic $validator = $this->getValidate($where,'del'); if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} - $res = $this->getModel()->del($where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + $res = $this->getModel()->edit(['delete_time'=>time()],$where); + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } /** @@ -126,4 +155,41 @@ class UserWithdrawLogic extends BaseLogic { return getDataAttr($this->getModel(),$data); } + + /** + * 取消/拒绝提现 + * @param int $where['id'] 提现id + * @param int $data['status'] status=3取消或status=4拒绝 + * @param string $data['re_note'] 理由,选填 + * @return array + */ + public function userWithdrawSuccessConfirm($data, $where) + { + if(empty($where) || empty($data)){return ReturnData::create(ReturnData::PARAMS_ERROR);} + if($data['status']!=3 || $data['status']!=4){return ReturnData::create(ReturnData::PARAMS_ERROR);} + + $user_withdraw = $this->getModel()->getOne($where); + if(!$user_withdraw){return false;} + + DB::beginTransaction(); + + $data['updated_at'] = time(); + $res = $this->getModel()->edit($data,$where); + if($res) + { + //添加用户余额记录并增加用户余额 + $user_money_data['user_id'] = $user_withdraw->user_id; + $user_money_data['type'] = UserMoney::USER_MONEY_INCREMENT; + $user_money_data['money'] = $user_withdraw->money; + $user_money_data['des'] = '提现退回'; + $user_money = logic('UserMoney')->add($user_money_data); + if($user_money['code'] != ReturnData::SUCCESS){DB::rollBack();return false;} + + DB::commit(); + return true; + } + + DB::rollBack(); + return false; + } } \ No newline at end of file diff --git a/app/Http/Logic/VerifyCodeLogic.php b/app/Http/Logic/VerifyCodeLogic.php index 2293109..5b9b59f 100644 --- a/app/Http/Logic/VerifyCodeLogic.php +++ b/app/Http/Logic/VerifyCodeLogic.php @@ -84,9 +84,9 @@ class VerifyCodeLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->add($data,$type); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //修改 @@ -98,9 +98,9 @@ class VerifyCodeLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->edit($data,$where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //删除 @@ -112,9 +112,9 @@ class VerifyCodeLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->del($where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } /** diff --git a/app/Http/Logic/WeixinMenuLogic.php b/app/Http/Logic/WeixinMenuLogic.php index 3db231b..355ccda 100644 --- a/app/Http/Logic/WeixinMenuLogic.php +++ b/app/Http/Logic/WeixinMenuLogic.php @@ -84,9 +84,9 @@ class WeixinMenuLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->add($data,$type); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //修改 @@ -98,9 +98,9 @@ class WeixinMenuLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->edit($data,$where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } //删除 @@ -112,9 +112,9 @@ class WeixinMenuLogic extends BaseLogic if ($validator->fails()){return ReturnData::create(ReturnData::PARAMS_ERROR, null, $validator->errors()->first());} $res = $this->getModel()->del($where); - if($res === false){return ReturnData::create(ReturnData::SYSTEM_FAIL);} + if($res){return ReturnData::create(ReturnData::SUCCESS,$res);} - return ReturnData::create(ReturnData::SUCCESS,$res); + return ReturnData::create(ReturnData::FAIL); } /** diff --git a/app/Http/Model/User.php b/app/Http/Model/User.php index 37d83fd..007e533 100644 --- a/app/Http/Model/User.php +++ b/app/Http/Model/User.php @@ -12,6 +12,8 @@ class User extends BaseModel protected $hidden = array('password','pay_password'); protected $guarded = []; //$guarded包含你不想被赋值的字段数组。 + const USER_NORMAL_STATUS = 1; //用户状态 0待审 1正常状态 2 删除至回收站 3锁定 + public function getDb() { return DB::table($this->table); @@ -176,198 +178,6 @@ class User extends BaseModel { return $this->belongsTo(UserRole::class, 'role_id', 'id'); } - /* - //签到 - public function signin() - { - $user = self::where(['id'=>Token::$uid])->first(); - - $signin_time=''; - if(!empty($user->signin_time)){$signin_time = date('Ymd',strtotime($user->signin_time));} //签到时间 - - $today = date('Ymd',time()); //今日日期 - - if($signin_time==$today){return '今日已签到!';} - - $signin_point = (int)Sysconfig::where(['varname'=>'CMS_SIGN_POINT'])->value('value'); //签到积分 - User::where(['id'=>Token::$uid])->update(['point'=>($user->point+$signin_point),'signin_time'=>date('Y-m-d H:i:s')]); //更新用户积分,及签到时间 - UserPoint::insert(['type'=>1,'point'=>$signin_point,'des'=>'签到','user_id'=>Token::$uid]); //添加签到积分记录 - - return true; - } - - //获取列表 - public static function getList(array $param) - { - extract($param); //参数:limit,offset - - $limit = isset($limit) ? $limit : 10; - $offset = isset($offset) ? $offset : 0; - - $model = new User; - - if(isset($group_id)){$where['group_id'] = $group_id;} - if(isset($parent_id)){$where['parent_id'] = $parent_id;} - - if(isset($where)){$model = $model->where($where);} - - $res['count'] = $model->count(); - $res['list'] = array(); - - if($res['count']>0) - { - $res['list'] = $model->select('id','user_name','email','sex','money','commission','point','mobile','nickname','head_img','add_time')->skip($offset)->take($limit)->orderBy('id','desc')->get(); - - foreach($res['list'] as $k=>$v) - { - $res['list'][$k]['user_name'] = !empty($res['list'][$k]['mobile']) ? $res['list'][$k]['mobile'] : $res['list'][$k]['user_name']; - } - } - else - { - return false; - } - - return $res; - } - - //获取一条用户信息 - public static function getOne($id) - { - $user = self::where('id', $id)->first(); - if(!$user){return false;} - $user['reciever_address'] = UserAddress::getOne($user->address_id); - - return $user; - } - - public static function add(array $data) - { - if ($id = self::insertGetId($data)) - { - return $id; - } - - return false; - } - - public static function modify($where, array $data) - { - if (self::where($where)->update($data)) - { - return true; - } - - return false; - } - - //删除一条记录 - public static function remove($id) - { - if (!self::whereIn('id', explode(',', $id))->delete()) - { - return false; - } - - return true; - } - */ - - //获取用户信息 - public static function getUserInfo($user_id) - { - $user = self::where('id', $user_id)->first(); - if(!$user){return false;} - $user->reciever_address = UserAddress::getOne($user->address_id); - $user->collect_goods_count = CollectGoods::where('user_id', $user_id)->count(); - $user->bonus_count = UserBonus::where(array('user_id'=>$user_id,'status'=>0))->count(); - - $userinfo = $user->makeVisible(array('pay_password'))->toArray(); - $user->pay_password = 0; - if($userinfo['pay_password']){$user->pay_password = 1;} - - return $user; - } - - //修改用户密码、支付密码 - public static function userPasswordUpdate($where,array $param) - { - extract($param); - $data = ''; - - $user = self::where($where)->first(); - if(!$user){return false;} - - $user = $user->makeVisible(array('password','pay_password'))->toArray(); - - if(isset($old_password) && $old_password!=$user['password']){return false;} //旧密码错误 - if(isset($password) && $password==''){return false;} //新密码为空 - - if(isset($old_pay_password) && $old_pay_password!=$user['pay_password']){return false;} - if(isset($pay_password) && $pay_password==''){return false;} - - if(isset($password)){$data['password'] = $password;} - if(isset($pay_password)){$data['pay_password'] = $pay_password;} - - if ($data != '' && self::where($where)->update($data)) - { - return true; - } - - return false; - } - - //注册 - public static function wxRegister(array $param) - { - extract($param); //参数 - - if(isset($user_name)){$data['user_name'] = $user_name;} - if(isset($mobile)){$data['mobile'] = $mobile;} - if(isset($password)){$data['password'] = $password;} //md5加密 - if(isset($parent_id) && !empty($parent_id)){$data['parent_id'] = $parent_id;} - if(isset($openid)){$data['openid'] = $openid;} - if(isset($unionid)){$data['unionid'] = $unionid;} - if(isset($sex)){$data['sex'] = $sex;} - if(isset($head_img)){$data['head_img'] = $head_img;} - if(isset($nickname)){$data['nickname'] = $nickname;} - $data['add_time'] = time(); - - if (isset($data) && $id = self::add($data)) - { - //生成token - return Token::getToken(Token::TYPE_WEIXIN, $id); - } - - return false; - } - - //用户登录 - public static function wxLogin(array $param) - { - extract($param); //参数 - - if(isset($openid) && !empty($openid)) - { - $user = self::where(array('openid'=>$openid))->first(); - } - else - { - $user = self::where(array('mobile'=>$user_name,'password'=>$password))->orWhere(array('user_name'=>$user_name,'password'=>$password))->first(); - } - - if(!isset($user)){return false;} - - $res = self::getUserInfo($user->id); - $token = Token::getToken(Token::TYPE_WEIXIN, $user->id); - - foreach($token as $k=>$v) - { - $res->$k = $v; - } - - return $res; - } //性别1男2女 public function getSexAttr($data) diff --git a/app/Http/Model/UserGoodsHistory.php b/app/Http/Model/UserGoodsHistory.php index 3c949cd..a865ae4 100644 --- a/app/Http/Model/UserGoodsHistory.php +++ b/app/Http/Model/UserGoodsHistory.php @@ -168,100 +168,4 @@ class UserGoodsHistory extends BaseModel return $res; } - /* - //获取列表 - public static function getList(array $param) - { - extract($param); //参数:limit,offset - - $limit = isset($limit) ? $limit : 10; - $offset = isset($offset) ? $offset : 0; - - $model = new UserGoodsHistory; - - if(isset($user_id)){$where['user_id'] = $user_id;} - if(isset($goods_id)){$where['goods_id'] = $goods_id;} - - if(isset($where)){$model = $model->where($where);} - - $res['count'] = $model->count(); - $res['list'] = array(); - - if($res['count']>0) - { - $res['list'] = $model->skip($offset)->take($limit)->orderBy('id','desc')->get(); - - if($res['list']) - { - foreach($res['list'] as $k=>$v) - { - $goods = Goods::getOne(array('id'=>$v['goods_id'],'field'=>array('id', 'typeid', 'tuijian', 'click', 'title', 'sn', 'price','litpic', 'pubdate', 'add_time', 'market_price', 'goods_number', 'sale', 'comments','promote_start_date','promote_price','promote_end_date','goods_img','spec','point'))); - - $res['list'][$k]['goods'] = $goods; - } - } - } - else - { - return false; - } - - return $res; - } - - public static function getOne(array $param) - { - extract($param); //参数 - - $where['id'] = $id; - - return self::where($where)->first(); - } - - public static function add(array $data) - { - if(self::where($data)->first()){return false;} - - if (!self::where($data)->first()) - { - $data['add_time'] = time(); - - return self::insertGetId($data); - } - - return false; - } - - public static function modify($where, array $data) - { - if (self::where($where)->update($data) !== false) - { - return true; - } - - return false; - } - - //删除一条记录 - public static function remove($id,$user_id) - { - if (self::whereIn('id', explode(',', $id))->where('user_id',$user_id)->delete() === false) - { - return false; - } - - return true; - } - - //清空我的足迹 - public static function clear($user_id) - { - if (self::where('user_id',$user_id)->delete() === false) - { - return false; - } - - return true; - } - */ } \ No newline at end of file diff --git a/app/Http/Model/UserMessage.php b/app/Http/Model/UserMessage.php index 05a8419..e039f93 100644 --- a/app/Http/Model/UserMessage.php +++ b/app/Http/Model/UserMessage.php @@ -168,71 +168,4 @@ class UserMessage extends BaseModel return $res; } - /* - //获取列表 - public static function getList(array $param) - { - extract($param); //参数:limit,offset - - $limit = isset($limit) ? $limit : 10; - $offset = isset($offset) ? $offset : 0; - - $model = new self; - - if(isset($type)){$where['type'] = $type;} - if(isset($status)){$where['status'] = $status;} - - $model = $model->whereIn('user_id',array(0,$user_id)); - if(isset($where)){$model = $model->where($where);} - - $res['count'] = $model->count(); - $res['list'] = array(); - - if($res['count']>0) - { - $res['list'] = $model->skip($offset)->take($limit)->orderBy('id','desc')->get(); - } - else - { - return false; - } - - return $res; - } - - public static function getOne($where) - { - return self::where($where)->first(); - } - - public static function add(array $data) - { - if ($id = self::insertGetId($data)) - { - return $id; - } - - return false; - } - - public static function modify($where, array $data) - { - if (self::where($where)->update($data)) - { - return true; - } - - return false; - } - - //删除一条记录 - public static function remove($id) - { - if (!self::whereIn('id', explode(',', $id))->delete()) - { - return false; - } - - return true; - } */ } \ No newline at end of file diff --git a/app/Http/Model/UserMoney.php b/app/Http/Model/UserMoney.php index b56c195..48f16f9 100644 --- a/app/Http/Model/UserMoney.php +++ b/app/Http/Model/UserMoney.php @@ -12,6 +12,9 @@ class UserMoney extends BaseModel protected $hidden = array(); protected $guarded = array(); //$guarded包含你不想被赋值的字段数组。 + const USER_MONEY_INCREMENT = 0; //用户余额0增加,1减少 + const USER_MONEY_DECREMENT = 1; + public function getDb() { return DB::table($this->table); @@ -168,77 +171,4 @@ class UserMoney extends BaseModel return $res; } - /* - //获取列表 - public static function getList(array $param) - { - extract($param); //参数:limit,offset - - $where['user_id'] = $user_id; - $limit = isset($limit) ? $limit : 10; - $offset = isset($offset) ? $offset : 0; - - $model = new UserMoney; - - if(isset($type)){$where['type'] = $type;} - - $model = $model->where($where); - - $res['count'] = $model->count(); - $res['list'] = array(); - - if($res['count']>0) - { - $res['list'] = $model->skip($offset)->take($limit)->orderBy('id','desc')->get(); - } - else - { - return false; - } - - return $res; - } - - public static function getOne($id) - { - return self::where('id', $id)->first(); - } - - public static function add(array $data) - { - if ($id = self::insertGetId($data)) - { - return $id; - } - - return false; - } - - public static function modify($where, array $data) - { - if (self::where($where)->update($data)) - { - return true; - } - - return false; - } - - //删除一条记录 - public static function remove($id) - { - if (!self::whereIn('id', explode(',', $id))->delete()) - { - return false; - } - - return true; - } - */ - //描述-文字 - public function getDesAttr($data) - { - $arr = [0 => '不限', 1 => '黑色', 2 => '白色', 3 => '银色', 4 => '橙色', 5 => '绿色', 6 => '红色', 7 => '蓝色', 8 => '紫色', 9 => '黄色', 10 => '香槟色', 11 => '咖啡色']; - return $arr[$data['des']]; - } } \ No newline at end of file diff --git a/app/Http/Model/UserPoint.php b/app/Http/Model/UserPoint.php index 78a5a8e..eaede32 100644 --- a/app/Http/Model/UserPoint.php +++ b/app/Http/Model/UserPoint.php @@ -12,6 +12,9 @@ class UserPoint extends BaseModel protected $hidden = array(); protected $guarded = array(); //$guarded包含你不想被赋值的字段数组。 + const USER_POINT_INCREMENT = 0; //用户积分0增加,1减少 + const USER_POINT_DECREMENT = 1; + public function getDb() { return DB::table($this->table); @@ -168,70 +171,4 @@ class UserPoint extends BaseModel return $res; } - /* - //获取列表 - public static function getList(array $param) - { - extract($param); //参数:limit,offset - - $where['user_id'] = $user_id; - $limit = isset($limit) ? $limit : 10; - $offset = isset($offset) ? $offset : 0; - - $model = new UserPoint; - - if(isset($type)){$where['type'] = $type;} - - $model = $model->where($where); - - $res['count'] = $model->count(); - $res['list'] = array(); - - if($res['count']>0) - { - $res['list'] = $model->skip($offset)->take($limit)->orderBy('id','desc')->get(); - } - else - { - return false; - } - - return $res; - } - - public static function getOne($id) - { - return self::where('id', $id)->first(); - } - - public static function add(array $data) - { - if ($id = self::insertGetId($data)) - { - return $id; - } - - return false; - } - - public static function modify($where, array $data) - { - if (self::where($where)->update($data)) - { - return true; - } - - return false; - } - - //删除一条记录 - public static function remove($id) - { - if (!self::whereIn('id', explode(',', $id))->delete()) - { - return false; - } - - return true; - } */ } \ No newline at end of file diff --git a/app/Http/Model/UserRecharge.php b/app/Http/Model/UserRecharge.php index fdf790d..3418f91 100644 --- a/app/Http/Model/UserRecharge.php +++ b/app/Http/Model/UserRecharge.php @@ -5,15 +5,16 @@ use Log; class UserRecharge extends BaseModel { - //用户余额明细 + //用户充值 protected $table = 'user_recharge'; public $timestamps = false; protected $hidden = array(); protected $guarded = array(); //$guarded包含你不想被赋值的字段数组。 - const UN_PAY = 0; - const COMPLETE_PAY = 1; + const UN_PAY = 0; //未支付状态 + const COMPLETE_PAY = 1; //充值成功 + const USER_RECHARGE_DES = '充值'; public function getDb() { @@ -171,68 +172,4 @@ class UserRecharge extends BaseModel return $res; } - /* - //获取列表 - public static function getList(array $param) - { - extract($param); //参数:limit,offset - - $where['user_id'] = $user_id; - $limit = isset($limit) ? $limit : 10; - $offset = isset($offset) ? $offset : 0; - - $model = new self(); - - if(isset($status) && $status!=-1){$where['status'] = $status;} //-1表示获取所有 - - $model = $model->where($where); - - $res['count'] = $model->count(); - $res['list'] = array(); - - if($res['count']>0) - { - $res['list'] = $model->skip($offset)->take($limit)->orderBy('id','desc')->get(); - } - - return $res; - } - - public static function getOne($where) - { - return self::where($where)->first(); - } - - public static function add(array $data) - { - $data['recharge_sn'] = date('YmdHis').rand(1000,9999); - - if ($id = self::insertGetId($data)) - { - return $id; - } - - return false; - } - - public static function modify($where, array $data) - { - if (self::where($where)->update($data) === false) - { - return false; - } - - return true; - } - - //删除一条记录 - public static function remove($id) - { - if (!self::whereIn('id', explode(',', $id))->delete()) - { - return false; - } - - return true; - } */ } \ No newline at end of file diff --git a/app/Http/Model/UserWithdraw.php b/app/Http/Model/UserWithdraw.php index a67be20..203b605 100644 --- a/app/Http/Model/UserWithdraw.php +++ b/app/Http/Model/UserWithdraw.php @@ -12,6 +12,9 @@ class UserWithdraw extends BaseModel protected $hidden = array(); protected $guarded = array(); //$guarded包含你不想被赋值的字段数组。 + const UN_DELETE = 0; //未删除 + const USER_WITHDRAW_DES = '提现'; + public function getDb() { return DB::table($this->table); @@ -168,54 +171,16 @@ class UserWithdraw extends BaseModel return $res; } - /* - //获取列表 - public static function getList(array $param) - { - extract($param); //参数:limit,offset - - $limit = isset($limit) ? $limit : 10; - $offset = isset($offset) ? $offset : 0; - $where['user_id'] = $user_id; - $where['is_delete'] = 0; - - $model = new self; - - if(isset($status) && !empty($status)){if($status==-1){}else{$where['status'] = $status;}} - if(isset($method)){$where['method'] = $method;} - - $model = $model->where($where); - - $res['count'] = $model->count(); - $res['list'] = array(); - - if($res['count']>0) - { - $res['list'] = $model->skip($offset)->take($limit)->orderBy('id','desc')->get(); - - foreach($res['list'] as $k=>$v) - { - $res['list'][$k]['status_text'] = self::getStatusText($v); - } - } - else - { - return false; - } - - return $res; - } - public static function getOne(array $param) + //获取提现状态文字:0未处理,1处理中,2成功,3取消,4拒绝 + public function getStatusAttr($data) { - extract($param); - - $where['id'] = $id; - $where['is_delete'] = 0; - - return self::where($where)->first(); + $arr = array(0 => '未处理', 1 => '处理中', 2 => '成功', 3 => '取消', 4 => '拒绝'); + return $arr[$data->status]; } + + /* public static function add(array $data) { $user = User::where(array('id'=>$data['user_id'],'pay_password'=>$data['pay_password']))->first(); @@ -240,52 +205,5 @@ class UserWithdraw extends BaseModel return ReturnData::create(ReturnData::SYSTEM_FAIL); } - public static function modify($where, array $data) - { - if (self::where($where)->update($data)) - { - return true; - } - - return false; - } - - //删除一条记录 - public static function remove($id,$user_id) - { - if (!self::whereIn('id', explode(',', $id))->where('user_id',$user_id)->update(array('is_delete'=>1))) - { - return false; - } - - return true; - } - - //获取提现状态文字:0未处理,1处理中,2成功,3取消,4拒绝 - public static function getStatusText($where) - { - $res = ''; - if($where['status'] == 0) - { - $res = '未处理'; - } - elseif($where['status'] == 1) - { - $res = '处理中'; - } - elseif($where['status'] == 2) - { - $res = '成功'; - } - elseif($where['status'] == 3) - { - $res = '取消'; - } - elseif($where['status'] == 4) - { - $res = '拒绝'; - } - - return $res; - } */ + */ } \ No newline at end of file diff --git a/app/Http/Requests/UserGoodsHistoryRequest.php b/app/Http/Requests/UserGoodsHistoryRequest.php new file mode 100644 index 0000000..f806ba0 --- /dev/null +++ b/app/Http/Requests/UserGoodsHistoryRequest.php @@ -0,0 +1,92 @@ + 'required|integer', + 'goods_id' => 'required|integer', + 'user_id' => 'required|integer', + 'add_time' => 'required|integer', + ]; + + //总的自定义错误信息 + protected $messages = [ + 'id.required' => 'ID必填', + 'id.integer' => 'ID必须为数字', + 'goods_id.required' => '商品ID必填', + 'goods_id.integer' => '商品ID必须为数字', + 'user_id.required' => '用户ID必填', + 'user_id.integer' => '用户ID必须为数字', + 'add_time.required' => '时间必填', + 'add_time.integer' => '时间格式不正确', + ]; + + //场景验证规则 + protected $scene = [ + 'add' => ['goods_id', 'user_id'], + 'edit' => ['goods_id'], + 'del' => ['id'], + ]; + + /** + * Determine if the user is authorized to make this request. + * + * @return bool + */ + public function authorize() + { + return true; //修改为true + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules() + { + return $this->rules; + } + + /** + * 获取被定义验证规则的错误消息. + * + * @return array + */ + public function messages() + { + return $this->messages; + } + + //获取场景验证规则 + public function getSceneRules($name, $fields = null) + { + $res = array(); + + if(!isset($this->scene[$name])) + { + return false; + } + + $scene = $this->scene[$name]; + if($fields != null && is_array($fields)) + { + $scene = $fields; + } + + foreach($scene as $k=>$v) + { + if(isset($this->rules[$v])){$res[$v] = $this->rules[$v];} + } + + return $res; + } + + //获取场景验证规则自定义错误信息 + public function getSceneRulesMessages() + { + return $this->messages; + } +} \ No newline at end of file diff --git a/app/Http/Requests/UserMessageRequest.php b/app/Http/Requests/UserMessageRequest.php new file mode 100644 index 0000000..31add09 --- /dev/null +++ b/app/Http/Requests/UserMessageRequest.php @@ -0,0 +1,102 @@ + 'required|integer', + 'user_id' => 'required|integer', + 'type' => 'integer|between:0,9', + 'status' => 'integer|between:0,9', + 'title' => 'max:150', + 'des' => 'required|max:250', + 'litpic' => 'max:100', + 'add_time' => 'required|integer', + ]; + + //总的自定义错误信息 + protected $messages = [ + 'id.required' => 'ID必填', + 'id.integer' => 'ID必须为数字', + 'user_id.required' => '用户ID必填', + 'user_id.integer' => '用户ID必须为数字', + 'type.integer' => '消息类型必须为数字', + 'type.between' => '系统消息0,活动消息1', + 'status.integer' => '查看状态必须为数字', + 'status.between' => '查看状态:0未查看,1已查看', + 'title.max' => '标题不能超过150个字符', + 'des.required' => '描述必填', + 'des.max' => '描述不能超过150个字符', + 'litpic.max' => '缩略图不能超过100个字符', + 'add_time.required' => '时间必填', + 'add_time.integer' => '时间格式不正确', + ]; + + //场景验证规则 + protected $scene = [ + 'add' => ['user_id', 'type', 'title', 'des', 'litpic'], + 'edit' => ['title', 'des'], + 'del' => ['id'], + ]; + + /** + * Determine if the user is authorized to make this request. + * + * @return bool + */ + public function authorize() + { + return true; //修改为true + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules() + { + return $this->rules; + } + + /** + * 获取被定义验证规则的错误消息. + * + * @return array + */ + public function messages() + { + return $this->messages; + } + + //获取场景验证规则 + public function getSceneRules($name, $fields = null) + { + $res = array(); + + if(!isset($this->scene[$name])) + { + return false; + } + + $scene = $this->scene[$name]; + if($fields != null && is_array($fields)) + { + $scene = $fields; + } + + foreach($scene as $k=>$v) + { + if(isset($this->rules[$v])){$res[$v] = $this->rules[$v];} + } + + return $res; + } + + //获取场景验证规则自定义错误信息 + public function getSceneRulesMessages() + { + return $this->messages; + } +} \ No newline at end of file diff --git a/app/Http/Requests/UserMoneyRequest.php b/app/Http/Requests/UserMoneyRequest.php new file mode 100644 index 0000000..4110c7d --- /dev/null +++ b/app/Http/Requests/UserMoneyRequest.php @@ -0,0 +1,101 @@ + 'required|integer', + 'user_id' => 'required|integer', + 'type' => 'integer|between:0,9', + 'money' => ['required','regex:/^\d{0,10}(\.\d{0,2})?$/'], + 'add_time' => 'required|integer', + 'des' => 'required|max:100', + 'user_money' => ['required','regex:/^\d{0,10}(\.\d{0,2})?$/'], + ]; + + //总的自定义错误信息 + protected $messages = [ + 'id.required' => 'ID必填', + 'id.integer' => 'ID必须为数字', + 'user_id.required' => '用户ID必填', + 'user_id.integer' => '用户ID必须为数字', + 'type.integer' => '类型必须为数字', + 'type.between' => '0增加,1减少', + 'money.required' => '金额必填', + 'money.regex' => '金额格式不正确,只能带2位小数的数字', + 'add_time.required' => '时间必填', + 'add_time.integer' => '时间格式不正确', + 'des.required' => '描述必填', + 'des.max' => '描述不能超过100个字符', + 'user_money.required' => '余额必填', + 'user_money.regex' => '余额格式不正确,只能带2位小数的数字', + ]; + + //场景验证规则 + protected $scene = [ + 'add' => ['user_id', 'type', 'money', 'des'], + 'edit' => ['user_id', 'type', 'money', 'des'], + 'del' => ['id'], + ]; + + /** + * Determine if the user is authorized to make this request. + * + * @return bool + */ + public function authorize() + { + return true; //修改为true + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules() + { + return $this->rules; + } + + /** + * 获取被定义验证规则的错误消息. + * + * @return array + */ + public function messages() + { + return $this->messages; + } + + //获取场景验证规则 + public function getSceneRules($name, $fields = null) + { + $res = array(); + + if(!isset($this->scene[$name])) + { + return false; + } + + $scene = $this->scene[$name]; + if($fields != null && is_array($fields)) + { + $scene = $fields; + } + + foreach($scene as $k=>$v) + { + if(isset($this->rules[$v])){$res[$v] = $this->rules[$v];} + } + + return $res; + } + + //获取场景验证规则自定义错误信息 + public function getSceneRulesMessages() + { + return $this->messages; + } +} \ No newline at end of file diff --git a/app/Http/Requests/UserPointRequest.php b/app/Http/Requests/UserPointRequest.php new file mode 100644 index 0000000..a5678c2 --- /dev/null +++ b/app/Http/Requests/UserPointRequest.php @@ -0,0 +1,101 @@ + 'required|integer', + 'user_id' => 'required|integer', + 'type' => 'integer|between:0,9', + 'point' => 'required|integer', + 'add_time' => 'required|integer', + 'des' => 'required|max:100', + 'user_money' => 'required|integer', + ]; + + //总的自定义错误信息 + protected $messages = [ + 'id.required' => 'ID必填', + 'id.integer' => 'ID必须为数字', + 'user_id.required' => '用户ID必填', + 'user_id.integer' => '用户ID必须为数字', + 'type.integer' => '类型必须为数字', + 'type.between' => '0增加,1减少', + 'point.required' => '积分必填', + 'point.integer' => '积分格式不正确,只能带2位小数的数字', + 'add_time.required' => '时间必填', + 'add_time.integer' => '时间格式不正确', + 'des.required' => '描述必填', + 'des.max' => '描述不能超过100个字符', + 'user_point.required' => '剩余积分必填', + 'user_point.integer' => '剩余积分格式不正确,只能带2位小数的数字', + ]; + + //场景验证规则 + protected $scene = [ + 'add' => ['user_id', 'type', 'point', 'des'], + 'edit' => ['user_id', 'type', 'point', 'des'], + 'del' => ['id'], + ]; + + /** + * Determine if the user is authorized to make this request. + * + * @return bool + */ + public function authorize() + { + return true; //修改为true + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules() + { + return $this->rules; + } + + /** + * 获取被定义验证规则的错误消息. + * + * @return array + */ + public function messages() + { + return $this->messages; + } + + //获取场景验证规则 + public function getSceneRules($name, $fields = null) + { + $res = array(); + + if(!isset($this->scene[$name])) + { + return false; + } + + $scene = $this->scene[$name]; + if($fields != null && is_array($fields)) + { + $scene = $fields; + } + + foreach($scene as $k=>$v) + { + if(isset($this->rules[$v])){$res[$v] = $this->rules[$v];} + } + + return $res; + } + + //获取场景验证规则自定义错误信息 + public function getSceneRulesMessages() + { + return $this->messages; + } +} \ No newline at end of file diff --git a/app/Http/Requests/UserRechargeRequest.php b/app/Http/Requests/UserRechargeRequest.php new file mode 100644 index 0000000..165483b --- /dev/null +++ b/app/Http/Requests/UserRechargeRequest.php @@ -0,0 +1,110 @@ + 'required|integer', + 'user_id' => 'required|integer', + 'money' => ['required','regex:/^\d{0,10}(\.\d{0,2})?$/'], + 'pay_time' => 'required|integer', + 'pay_type' => 'integer|between:0,3', + 'pay_money' => ['regex:/^\d{0,10}(\.\d{0,2})?$/'], + 'trade_no' => 'max:30', + 'status' => 'integer|between:0,3', + 'created_at' => 'required|integer', + 'updated_at' => 'integer', + 'recharge_sn' => 'required|max:60', + ]; + + //总的自定义错误信息 + protected $messages = [ + 'id.required' => 'ID必填', + 'id.integer' => 'ID必须为数字', + 'user_id.required' => '用户ID必填', + 'user_id.integer' => '用户ID必须为数字', + 'money.required' => '充值金额必填', + 'money.regex' => '充值金额格式不正确,只能带2位小数的数字', + 'pay_time.required' => '充值时间必填', + 'pay_time.integer' => '充值时间格式不正确', + 'pay_type.integer' => '充值类型必须为数字', + 'pay_type.between' => '充值类型:1微信,2支付宝', + 'pay_money.regex' => '实付金额格式不正确,只能带2位小数的数字', + 'trade_no.max' => '支付流水号不能超过30个字符', + 'status.integer' => '充值状态必须为数字', + 'status.between' => '充值状态:0未处理,1已完成,2失败', + 'created_at.required' => '添加时间必填', + 'created_at.integer' => '添加时间格式不正确', + 'updated_at.integer' => '更新时间格式不正确', + 'recharge_sn.required' => '支付订单号必填', + 'recharge_sn.max' => '支付订单号不能超过60个字符', + ]; + + //场景验证规则 + protected $scene = [ + 'add' => ['user_id', 'money', 'recharge_sn', 'des'], + 'edit' => ['user_id', 'money', 'recharge_sn', 'des'], + 'del' => ['id'], + ]; + + /** + * Determine if the user is authorized to make this request. + * + * @return bool + */ + public function authorize() + { + return true; //修改为true + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules() + { + return $this->rules; + } + + /** + * 获取被定义验证规则的错误消息. + * + * @return array + */ + public function messages() + { + return $this->messages; + } + + //获取场景验证规则 + public function getSceneRules($name, $fields = null) + { + $res = array(); + + if(!isset($this->scene[$name])) + { + return false; + } + + $scene = $this->scene[$name]; + if($fields != null && is_array($fields)) + { + $scene = $fields; + } + + foreach($scene as $k=>$v) + { + if(isset($this->rules[$v])){$res[$v] = $this->rules[$v];} + } + + return $res; + } + + //获取场景验证规则自定义错误信息 + public function getSceneRulesMessages() + { + return $this->messages; + } +} \ No newline at end of file diff --git a/app/Http/Requests/UserRequest.php b/app/Http/Requests/UserRequest.php index 3eccff5..b864169 100644 --- a/app/Http/Requests/UserRequest.php +++ b/app/Http/Requests/UserRequest.php @@ -80,6 +80,7 @@ class UserRequest extends BaseRequest protected $scene = [ 'add' => ['email', 'user_name', 'password', 'pay_password', 'head_img', 'sex', 'birthday', 'commission', 'money', 'frozen_money', 'point', 'rank_points', 'address_id', 'add_time', 'user_rank', 'parent_id', 'nickname', 'mobile', 'status', 'group_id', 'updated_at', 'signin_time', 'openid', 'unionid', 'push_id', 'refund_account', 'refund_name', 'consumption_money'], 'edit' => ['email', 'user_name', 'password', 'pay_password', 'head_img', 'sex', 'birthday', 'commission', 'money', 'frozen_money', 'point', 'rank_points', 'address_id', 'add_time', 'user_rank', 'parent_id', 'nickname', 'mobile', 'status', 'group_id', 'updated_at', 'signin_time', 'openid', 'unionid', 'push_id', 'refund_account', 'refund_name', 'consumption_money'], + 'wx_register' => ['email', 'user_name', 'password', 'pay_password', 'head_img', 'add_time', 'parent_id', 'nickname', 'mobile', 'group_id', 'openid', 'unionid', 'push_id'], 'del' => ['id'], ]; diff --git a/app/Http/Requests/UserWithdrawRequest.php b/app/Http/Requests/UserWithdrawRequest.php new file mode 100644 index 0000000..22f0efd --- /dev/null +++ b/app/Http/Requests/UserWithdrawRequest.php @@ -0,0 +1,113 @@ + 'required|integer', + 'user_id' => 'required|integer', + 'add_time' => 'required|integer', + 'money' => ['required','regex:/^\d{0,10}(\.\d{0,2})?$/'], + 'name' => 'max:30', + 'status' => 'integer|between:0,5', + 'note' => 'max:250', + 're_note' => 'max:250', + 'bank_name' => 'max:30', + 'bank_place' => 'max:150', + 'account' => 'required|max:30', + 'method' => 'required|max:20', + 'delete_time' => 'integer', + ]; + + //总的自定义错误信息 + protected $messages = [ + 'id.required' => 'ID必填', + 'id.integer' => 'ID必须为数字', + 'user_id.required' => '用户ID必填', + 'user_id.integer' => '用户ID必须为数字', + 'add_time.required' => '添加时间必填', + 'add_time.integer' => '添加时间格式不正确', + 'money.required' => '提现金额必填', + 'money.regex' => '提现金额格式不正确,只能带2位小数的数字', + 'name.max' => '姓名不能超过30个字符', + 'status.integer' => '状态必须是数字', + 'status.between' => '状态 0未处理,1处理中,2成功,3取消,4拒绝', + 'note.max' => '用户备注不能超过250个字符', + 're_note.max' => '回复信息不能超过250个字符', + 'bank_name.max' => '银行名称不能超过30个字符', + 'bank_place.max' => '开户行不能超过150个字符', + 'account.required' => '提现账号必填', + 'account.max' => '支付宝账号或者银行卡号不能超过30个字符', + 'method.required' => '提现方式必填', + 'method.max' => '提现方式不能超过20个字符', + 'delete_time.integer' => '删除时间格式不正确', + ]; + + //场景验证规则 + protected $scene = [ + 'add' => ['user_id', 'money', 'name', 'note', 'bank_name', 'bank_place', 'account', 'method'], + 'edit' => ['user_id', 'money', 'name', 'note', 'bank_name', 'bank_place', 'account', 'method'], + 'del' => ['id'], + ]; + + /** + * Determine if the user is authorized to make this request. + * + * @return bool + */ + public function authorize() + { + return true; //修改为true + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules() + { + return $this->rules; + } + + /** + * 获取被定义验证规则的错误消息. + * + * @return array + */ + public function messages() + { + return $this->messages; + } + + //获取场景验证规则 + public function getSceneRules($name, $fields = null) + { + $res = array(); + + if(!isset($this->scene[$name])) + { + return false; + } + + $scene = $this->scene[$name]; + if($fields != null && is_array($fields)) + { + $scene = $fields; + } + + foreach($scene as $k=>$v) + { + if(isset($this->rules[$v])){$res[$v] = $this->rules[$v];} + } + + return $res; + } + + //获取场景验证规则自定义错误信息 + public function getSceneRulesMessages() + { + return $this->messages; + } +} \ No newline at end of file diff --git a/app/Http/Service/AliyunOSS.php b/app/Http/Service/AliyunOSS.php new file mode 100644 index 0000000..be36814 --- /dev/null +++ b/app/Http/Service/AliyunOSS.php @@ -0,0 +1,106 @@ +1, 'msg'=>$e->getMessage(), 'data'=>'']; + } + + return $ossClient; + } + + public static function getBucketName() + { + return self::OSS_TEST_BUCKET; + } + + /** + * 工具方法,创建一个存储空间,如果发生异常直接exit + */ + public static function createBucket() + { + $ossClient = self::getOssClient(); + if (is_null($ossClient)) exit(1); + $bucket = self::getBucketName(); + $acl = OssClient::OSS_ACL_TYPE_PUBLIC_READ; + try { + $res = $ossClient->createBucket($bucket, $acl); + } catch (\OssException $e) { + return ['code'=>1, 'msg'=>$e->getMessage(), 'data'=>'']; + } + + return ['code'=>0, 'msg'=>'操作成功', 'data'=>$res]; + } + + /** + * 上传指定的本地文件内容 + * + * @param OssClient $ossClient OssClient实例 + * @param string $bucket 存储空间名称 + * @return null + */ + public static function uploadFile($object, $filePath) + { + //$object = "oss-php-sdk-test/upload-test-object-name.txt"; + //$filePath = __FILE__; + $options = array(); + $ossClient = self::getOssClient(); + $bucket = self::getBucketName(); + + try { + //self::createBucket(); //如果没创建存储空间,先用这行执行创建存储空间 + $res = $ossClient->uploadFile($bucket, $object, $filePath, $options); + } catch (\OssException $e) { + return ['code'=>1, 'msg'=>$e->getMessage(), 'data'=>'']; + } + + return ['code'=>0, 'msg'=>'操作成功', 'data'=>$res]; + } + + /** + * 把本地变量的内容到文件 + * + * 简单上传,上传指定变量的内存值作为object的内容 + * + * @param OssClient $ossClient OssClient实例 + * @param string $bucket 存储空间名称 + * @return null + */ + public static function putObject($object, $filePath) + { + //$object = "oss-php-sdk-test/upload-test-object-name.txt"; + $content = file_get_contents($filePath); + $options = array(); + $ossClient = self::getOssClient(); + $bucket = self::getBucketName(); + + try { + $res = $ossClient->putObject($bucket, $object, $content, $options); + } catch (\OssException $e) { + return ['code'=>1, 'msg'=>$e->getMessage(), 'data'=>'']; + } + + return ['code'=>0, 'msg'=>'操作成功', 'data'=>$res]; + } +} \ No newline at end of file diff --git a/composer.json b/composer.json index d96fc04..ed4ea78 100644 --- a/composer.json +++ b/composer.json @@ -57,4 +57,4 @@ "sort-packages": true, "optimize-autoloader": true } -} +} \ No newline at end of file diff --git a/resources/org/OSS/Core/MimeTypes.php b/resources/org/OSS/Core/MimeTypes.php new file mode 100644 index 0000000..e9b88ff --- /dev/null +++ b/resources/org/OSS/Core/MimeTypes.php @@ -0,0 +1,262 @@ + 1) { + $ext = strtolower(end($parts)); + if (isset(self::$mime_types[$ext])) { + return self::$mime_types[$ext]; + } + } + + return null; + } + + private static $mime_types = array( + 'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', + 'xltx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.template', + 'potx' => 'application/vnd.openxmlformats-officedocument.presentationml.template', + 'ppsx' => 'application/vnd.openxmlformats-officedocument.presentationml.slideshow', + 'pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation', + 'sldx' => 'application/vnd.openxmlformats-officedocument.presentationml.slide', + 'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', + 'dotx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.template', + 'xlam' => 'application/vnd.ms-excel.addin.macroEnabled.12', + 'xlsb' => 'application/vnd.ms-excel.sheet.binary.macroEnabled.12', + 'apk' => 'application/vnd.android.package-archive', + 'hqx' => 'application/mac-binhex40', + 'cpt' => 'application/mac-compactpro', + 'doc' => 'application/msword', + 'ogg' => 'audio/ogg', + 'pdf' => 'application/pdf', + 'rtf' => 'text/rtf', + 'mif' => 'application/vnd.mif', + 'xls' => 'application/vnd.ms-excel', + 'ppt' => 'application/vnd.ms-powerpoint', + 'odc' => 'application/vnd.oasis.opendocument.chart', + 'odb' => 'application/vnd.oasis.opendocument.database', + 'odf' => 'application/vnd.oasis.opendocument.formula', + 'odg' => 'application/vnd.oasis.opendocument.graphics', + 'otg' => 'application/vnd.oasis.opendocument.graphics-template', + 'odi' => 'application/vnd.oasis.opendocument.image', + 'odp' => 'application/vnd.oasis.opendocument.presentation', + 'otp' => 'application/vnd.oasis.opendocument.presentation-template', + 'ods' => 'application/vnd.oasis.opendocument.spreadsheet', + 'ots' => 'application/vnd.oasis.opendocument.spreadsheet-template', + 'odt' => 'application/vnd.oasis.opendocument.text', + 'odm' => 'application/vnd.oasis.opendocument.text-master', + 'ott' => 'application/vnd.oasis.opendocument.text-template', + 'oth' => 'application/vnd.oasis.opendocument.text-web', + 'sxw' => 'application/vnd.sun.xml.writer', + 'stw' => 'application/vnd.sun.xml.writer.template', + 'sxc' => 'application/vnd.sun.xml.calc', + 'stc' => 'application/vnd.sun.xml.calc.template', + 'sxd' => 'application/vnd.sun.xml.draw', + 'std' => 'application/vnd.sun.xml.draw.template', + 'sxi' => 'application/vnd.sun.xml.impress', + 'sti' => 'application/vnd.sun.xml.impress.template', + 'sxg' => 'application/vnd.sun.xml.writer.global', + 'sxm' => 'application/vnd.sun.xml.math', + 'sis' => 'application/vnd.symbian.install', + 'wbxml' => 'application/vnd.wap.wbxml', + 'wmlc' => 'application/vnd.wap.wmlc', + 'wmlsc' => 'application/vnd.wap.wmlscriptc', + 'bcpio' => 'application/x-bcpio', + 'torrent' => 'application/x-bittorrent', + 'bz2' => 'application/x-bzip2', + 'vcd' => 'application/x-cdlink', + 'pgn' => 'application/x-chess-pgn', + 'cpio' => 'application/x-cpio', + 'csh' => 'application/x-csh', + 'dvi' => 'application/x-dvi', + 'spl' => 'application/x-futuresplash', + 'gtar' => 'application/x-gtar', + 'hdf' => 'application/x-hdf', + 'jar' => 'application/java-archive', + 'jnlp' => 'application/x-java-jnlp-file', + 'js' => 'application/javascript', + 'json' => 'application/json', + 'ksp' => 'application/x-kspread', + 'chrt' => 'application/x-kchart', + 'kil' => 'application/x-killustrator', + 'latex' => 'application/x-latex', + 'rpm' => 'application/x-rpm', + 'sh' => 'application/x-sh', + 'shar' => 'application/x-shar', + 'swf' => 'application/x-shockwave-flash', + 'sit' => 'application/x-stuffit', + 'sv4cpio' => 'application/x-sv4cpio', + 'sv4crc' => 'application/x-sv4crc', + 'tar' => 'application/x-tar', + 'tcl' => 'application/x-tcl', + 'tex' => 'application/x-tex', + 'man' => 'application/x-troff-man', + 'me' => 'application/x-troff-me', + 'ms' => 'application/x-troff-ms', + 'ustar' => 'application/x-ustar', + 'src' => 'application/x-wais-source', + 'zip' => 'application/zip', + 'm3u' => 'audio/x-mpegurl', + 'ra' => 'audio/x-pn-realaudio', + 'wav' => 'audio/x-wav', + 'wma' => 'audio/x-ms-wma', + 'wax' => 'audio/x-ms-wax', + 'pdb' => 'chemical/x-pdb', + 'xyz' => 'chemical/x-xyz', + 'bmp' => 'image/bmp', + 'gif' => 'image/gif', + 'ief' => 'image/ief', + 'png' => 'image/png', + 'wbmp' => 'image/vnd.wap.wbmp', + 'ras' => 'image/x-cmu-raster', + 'pnm' => 'image/x-portable-anymap', + 'pbm' => 'image/x-portable-bitmap', + 'pgm' => 'image/x-portable-graymap', + 'ppm' => 'image/x-portable-pixmap', + 'rgb' => 'image/x-rgb', + 'xbm' => 'image/x-xbitmap', + 'xpm' => 'image/x-xpixmap', + 'xwd' => 'image/x-xwindowdump', + 'css' => 'text/css', + 'rtx' => 'text/richtext', + 'tsv' => 'text/tab-separated-values', + 'jad' => 'text/vnd.sun.j2me.app-descriptor', + 'wml' => 'text/vnd.wap.wml', + 'wmls' => 'text/vnd.wap.wmlscript', + 'etx' => 'text/x-setext', + 'mxu' => 'video/vnd.mpegurl', + 'flv' => 'video/x-flv', + 'wm' => 'video/x-ms-wm', + 'wmv' => 'video/x-ms-wmv', + 'wmx' => 'video/x-ms-wmx', + 'wvx' => 'video/x-ms-wvx', + 'avi' => 'video/x-msvideo', + 'movie' => 'video/x-sgi-movie', + 'ice' => 'x-conference/x-cooltalk', + '3gp' => 'video/3gpp', + 'ai' => 'application/postscript', + 'aif' => 'audio/x-aiff', + 'aifc' => 'audio/x-aiff', + 'aiff' => 'audio/x-aiff', + 'asc' => 'text/plain', + 'atom' => 'application/atom+xml', + 'au' => 'audio/basic', + 'bin' => 'application/octet-stream', + 'cdf' => 'application/x-netcdf', + 'cgm' => 'image/cgm', + 'class' => 'application/octet-stream', + 'dcr' => 'application/x-director', + 'dif' => 'video/x-dv', + 'dir' => 'application/x-director', + 'djv' => 'image/vnd.djvu', + 'djvu' => 'image/vnd.djvu', + 'dll' => 'application/octet-stream', + 'dmg' => 'application/octet-stream', + 'dms' => 'application/octet-stream', + 'dtd' => 'application/xml-dtd', + 'dv' => 'video/x-dv', + 'dxr' => 'application/x-director', + 'eps' => 'application/postscript', + 'exe' => 'application/octet-stream', + 'ez' => 'application/andrew-inset', + 'gram' => 'application/srgs', + 'grxml' => 'application/srgs+xml', + 'gz' => 'application/x-gzip', + 'htm' => 'text/html', + 'html' => 'text/html', + 'ico' => 'image/x-icon', + 'ics' => 'text/calendar', + 'ifb' => 'text/calendar', + 'iges' => 'model/iges', + 'igs' => 'model/iges', + 'jp2' => 'image/jp2', + 'jpe' => 'image/jpeg', + 'jpeg' => 'image/jpeg', + 'jpg' => 'image/jpeg', + 'kar' => 'audio/midi', + 'lha' => 'application/octet-stream', + 'lzh' => 'application/octet-stream', + 'm4a' => 'audio/mp4a-latm', + 'm4p' => 'audio/mp4a-latm', + 'm4u' => 'video/vnd.mpegurl', + 'm4v' => 'video/x-m4v', + 'mac' => 'image/x-macpaint', + 'mathml' => 'application/mathml+xml', + 'mesh' => 'model/mesh', + 'mid' => 'audio/midi', + 'midi' => 'audio/midi', + 'mov' => 'video/quicktime', + 'mp2' => 'audio/mpeg', + 'mp3' => 'audio/mpeg', + 'mp4' => 'video/mp4', + 'mpe' => 'video/mpeg', + 'mpeg' => 'video/mpeg', + 'mpg' => 'video/mpeg', + 'mpga' => 'audio/mpeg', + 'msh' => 'model/mesh', + 'nc' => 'application/x-netcdf', + 'oda' => 'application/oda', + 'ogv' => 'video/ogv', + 'pct' => 'image/pict', + 'pic' => 'image/pict', + 'pict' => 'image/pict', + 'pnt' => 'image/x-macpaint', + 'pntg' => 'image/x-macpaint', + 'ps' => 'application/postscript', + 'qt' => 'video/quicktime', + 'qti' => 'image/x-quicktime', + 'qtif' => 'image/x-quicktime', + 'ram' => 'audio/x-pn-realaudio', + 'rdf' => 'application/rdf+xml', + 'rm' => 'application/vnd.rn-realmedia', + 'roff' => 'application/x-troff', + 'sgm' => 'text/sgml', + 'sgml' => 'text/sgml', + 'silo' => 'model/mesh', + 'skd' => 'application/x-koan', + 'skm' => 'application/x-koan', + 'skp' => 'application/x-koan', + 'skt' => 'application/x-koan', + 'smi' => 'application/smil', + 'smil' => 'application/smil', + 'snd' => 'audio/basic', + 'so' => 'application/octet-stream', + 'svg' => 'image/svg+xml', + 't' => 'application/x-troff', + 'texi' => 'application/x-texinfo', + 'texinfo' => 'application/x-texinfo', + 'tif' => 'image/tiff', + 'tiff' => 'image/tiff', + 'tr' => 'application/x-troff', + 'txt' => 'text/plain', + 'vrml' => 'model/vrml', + 'vxml' => 'application/voicexml+xml', + 'webm' => 'video/webm', + 'webp' => 'image/webp', + 'wrl' => 'model/vrml', + 'xht' => 'application/xhtml+xml', + 'xhtml' => 'application/xhtml+xml', + 'xml' => 'application/xml', + 'xsl' => 'application/xml', + 'xslt' => 'application/xslt+xml', + 'xul' => 'application/vnd.mozilla.xul+xml', + ); +} \ No newline at end of file diff --git a/resources/org/OSS/Core/OssException.php b/resources/org/OSS/Core/OssException.php new file mode 100644 index 0000000..b0e9e8b --- /dev/null +++ b/resources/org/OSS/Core/OssException.php @@ -0,0 +1,54 @@ +details = $details; + } else { + $message = $details; + parent::__construct($message); + } + } + + public function getHTTPStatus() + { + return isset($this->details['status']) ? $this->details['status'] : ''; + } + + public function getRequestId() + { + return isset($this->details['request-id']) ? $this->details['request-id'] : ''; + } + + public function getErrorCode() + { + return isset($this->details['code']) ? $this->details['code'] : ''; + } + + public function getErrorMessage() + { + return isset($this->details['message']) ? $this->details['message'] : ''; + } + + public function getDetails() + { + return isset($this->details['body']) ? $this->details['body'] : ''; + } +} diff --git a/resources/org/OSS/Core/OssUtil.php b/resources/org/OSS/Core/OssUtil.php new file mode 100644 index 0000000..6e5d413 --- /dev/null +++ b/resources/org/OSS/Core/OssUtil.php @@ -0,0 +1,461 @@ + $value) { + if (is_string($key) && !is_array($value)) { + $temp[] = rawurlencode($key) . '=' . rawurlencode($value); + } + } + return implode('&', $temp); + } + + /** + * 转义字符替换 + * + * @param string $subject + * @return string + */ + public static function sReplace($subject) + { + $search = array('<', '>', '&', '\'', '"'); + $replace = array('<', '>', '&', ''', '"'); + return str_replace($search, $replace, $subject); + } + + /** + * 检查是否是中文编码 + * + * @param $str + * @return int + */ + public static function chkChinese($str) + { + return preg_match('/[\x80-\xff]./', $str); + } + + /** + * 检测是否GB2312编码 + * + * @param string $str + * @return boolean false UTF-8编码 TRUE GB2312编码 + */ + public static function isGb2312($str) + { + for ($i = 0; $i < strlen($str); $i++) { + $v = ord($str[$i]); + if ($v > 127) { + if (($v >= 228) && ($v <= 233)) { + if (($i + 2) >= (strlen($str) - 1)) return true; // not enough characters + $v1 = ord($str[$i + 1]); + $v2 = ord($str[$i + 2]); + if (($v1 >= 128) && ($v1 <= 191) && ($v2 >= 128) && ($v2 <= 191)) + return false; + else + return true; + } + } + } + return false; + } + + /** + * 检测是否GBK编码 + * + * @param string $str + * @param boolean $gbk + * @return boolean + */ + public static function checkChar($str, $gbk = true) + { + for ($i = 0; $i < strlen($str); $i++) { + $v = ord($str[$i]); + if ($v > 127) { + if (($v >= 228) && ($v <= 233)) { + if (($i + 2) >= (strlen($str) - 1)) return $gbk ? true : FALSE; // not enough characters + $v1 = ord($str[$i + 1]); + $v2 = ord($str[$i + 2]); + if ($gbk) { + return (($v1 >= 128) && ($v1 <= 191) && ($v2 >= 128) && ($v2 <= 191)) ? FALSE : TRUE;//GBK + } else { + return (($v1 >= 128) && ($v1 <= 191) && ($v2 >= 128) && ($v2 <= 191)) ? TRUE : FALSE; + } + } + } + } + return $gbk ? TRUE : FALSE; + } + + /** + * 检验bucket名称是否合法 + * bucket的命名规范: + * 1. 只能包括小写字母,数字 + * 2. 必须以小写字母或者数字开头 + * 3. 长度必须在3-63字节之间 + * + * @param string $bucket Bucket名称 + * @return boolean + */ + public static function validateBucket($bucket) + { + $pattern = '/^[a-z0-9][a-z0-9-]{2,62}$/'; + if (!preg_match($pattern, $bucket)) { + return false; + } + return true; + } + + /** + * 检验object名称是否合法 + * object命名规范: + * 1. 规则长度必须在1-1023字节之间 + * 2. 使用UTF-8编码 + * 3. 不能以 "/" "\\"开头 + * + * @param string $object Object名称 + * @return boolean + */ + public static function validateObject($object) + { + $pattern = '/^.{1,1023}$/'; + if (empty($object) || !preg_match($pattern, $object) || + self::startsWith($object, '/') || self::startsWith($object, '\\') + ) { + return false; + } + return true; + } + + + /** + * 判断字符串$str是不是以$findMe开始 + * + * @param string $str + * @param string $findMe + * @return bool + */ + public static function startsWith($str, $findMe) + { + if (strpos($str, $findMe) === 0) { + return true; + } else { + return false; + } + } + + /** + * 生成createBucketXmlBody接口的xml消息 + * + * @param string $storageClass + * @return string + */ + public static function createBucketXmlBody($storageClass) + { + $xml = new \SimpleXMLElement(''); + $xml->addChild('StorageClass', $storageClass); + return $xml->asXML(); + } + + /** + * 检验$options + * + * @param array $options + * @throws OssException + * @return boolean + */ + public static function validateOptions($options) + { + //$options + if ($options != NULL && !is_array($options)) { + throw new OssException ($options . ':' . 'option must be array'); + } + } + + /** + * 检查上传文件的内容是否合法 + * + * @param $content string + * @throws OssException + */ + public static function validateContent($content) + { + if (empty($content)) { + throw new OssException("http body content is invalid"); + } + } + + /** + * 校验BUCKET/OBJECT/OBJECT GROUP是否为空 + * + * @param string $name + * @param string $errMsg + * @throws OssException + * @return void + */ + public static function throwOssExceptionWithMessageIfEmpty($name, $errMsg) + { + if (empty($name)) { + throw new OssException($errMsg); + } + } + + /** + * 仅供测试使用的接口,请勿使用 + * + * @param $filename + * @param $size + */ + public static function generateFile($filename, $size) + { + if (file_exists($filename) && $size == filesize($filename)) { + echo $filename . " already exists, no need to create again. "; + return; + } + $part_size = 1 * 1024 * 1024; + $fp = fopen($filename, "w"); + $characters = << 0) { + if ($size < $part_size) { + $write_size = $size; + } else { + $write_size = $part_size; + } + $size -= $write_size; + $a = $characters[rand(0, $charactersLength - 1)]; + $content = str_repeat($a, $write_size); + $flag = fwrite($fp, $content); + if (!$flag) { + echo "write to " . $filename . " failed.
"; + break; + } + } + } else { + echo "open " . $filename . " failed.
"; + } + fclose($fp); + } + + /** + * 得到文件的md5编码 + * + * @param $filename + * @param $from_pos + * @param $to_pos + * @return string + */ + public static function getMd5SumForFile($filename, $from_pos, $to_pos) + { + $content_md5 = ""; + if (($to_pos - $from_pos) > self::OSS_MAX_PART_SIZE) { + return $content_md5; + } + $filesize = filesize($filename); + if ($from_pos >= $filesize || $to_pos >= $filesize || $from_pos < 0 || $to_pos < 0) { + return $content_md5; + } + + $total_length = $to_pos - $from_pos + 1; + $buffer = 8192; + $left_length = $total_length; + if (!file_exists($filename)) { + return $content_md5; + } + + if (false === $fh = fopen($filename, 'rb')) { + return $content_md5; + } + + fseek($fh, $from_pos); + $data = ''; + while (!feof($fh)) { + if ($left_length >= $buffer) { + $read_length = $buffer; + } else { + $read_length = $left_length; + } + if ($read_length <= 0) { + break; + } else { + $data .= fread($fh, $read_length); + $left_length = $left_length - $read_length; + } + } + fclose($fh); + $content_md5 = base64_encode(md5($data, true)); + return $content_md5; + } + + /** + * 检测是否windows系统,因为windows系统默认编码为GBK + * + * @return bool + */ + public static function isWin() + { + return strtoupper(substr(PHP_OS, 0, 3)) == "WIN"; + } + + /** + * 主要是由于windows系统编码是gbk,遇到中文时候,如果不进行转换处理会出现找不到文件的问题 + * + * @param $file_path + * @return string + */ + public static function encodePath($file_path) + { + if (self::chkChinese($file_path) && self::isWin()) { + $file_path = iconv('utf-8', 'gbk', $file_path); + } + return $file_path; + } + + /** + * 判断用户输入的endpoint是否是 xxx.xxx.xxx.xxx:port 或者 xxx.xxx.xxx.xxx的ip格式 + * + * @param string $endpoint 需要做判断的endpoint + * @return boolean + */ + public static function isIPFormat($endpoint) + { + $ip_array = explode(":", $endpoint); + $hostname = $ip_array[0]; + $ret = filter_var($hostname, FILTER_VALIDATE_IP); + if (!$ret) { + return false; + } else { + return true; + } + } + + /** + * 生成DeleteMultiObjects接口的xml消息 + * + * @param string[] $objects + * @param bool $quiet + * @return string + */ + public static function createDeleteObjectsXmlBody($objects, $quiet) + { + $xml = new \SimpleXMLElement(''); + $xml->addChild('Quiet', $quiet); + foreach ($objects as $object) { + $sub_object = $xml->addChild('Object'); + $object = OssUtil::sReplace($object); + $sub_object->addChild('Key', $object); + } + return $xml->asXML(); + } + + /** + * 生成CompleteMultipartUpload接口的xml消息 + * + * @param array[] $listParts + * @return string + */ + public static function createCompleteMultipartUploadXmlBody($listParts) + { + $xml = new \SimpleXMLElement(''); + foreach ($listParts as $node) { + $part = $xml->addChild('Part'); + $part->addChild('PartNumber', $node['PartNumber']); + $part->addChild('ETag', $node['ETag']); + } + return $xml->asXML(); + } + + /** + * 读取目录 + * + * @param string $dir + * @param string $exclude + * @param bool $recursive + * @return string[] + */ + public static function readDir($dir, $exclude = ".|..|.svn|.git", $recursive = false) + { + $file_list_array = array(); + $base_path = $dir; + $exclude_array = explode("|", $exclude); + $exclude_array = array_unique(array_merge($exclude_array, array('.', '..'))); + + if ($recursive) { + foreach (new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($dir)) as $new_file) { + if ($new_file->isDir()) continue; + $object = str_replace($base_path, '', $new_file); + if (!in_array(strtolower($object), $exclude_array)) { + $object = ltrim($object, '/'); + if (is_file($new_file)) { + $key = md5($new_file . $object, false); + $file_list_array[$key] = array('path' => $new_file, 'file' => $object,); + } + } + } + } else if ($handle = opendir($dir)) { + while (false !== ($file = readdir($handle))) { + if (!in_array(strtolower($file), $exclude_array)) { + $new_file = $dir . '/' . $file; + $object = $file; + $object = ltrim($object, '/'); + if (is_file($new_file)) { + $key = md5($new_file . $object, false); + $file_list_array[$key] = array('path' => $new_file, 'file' => $object,); + } + } + } + closedir($handle); + } + return $file_list_array; + } + + /** + * Decode key based on the encoding type + * + * @param string $key + * @param string $encoding + * @return string + */ + public static function decodeKey($key, $encoding) + { + if ($encoding == "") { + return $key; + } + + if ($encoding == "url") { + return rawurldecode($key); + } else { + throw new OssException("Unrecognized encoding type: " . $encoding); + } + } +} diff --git a/resources/org/OSS/Http/LICENSE b/resources/org/OSS/Http/LICENSE new file mode 100644 index 0000000..49b38bd --- /dev/null +++ b/resources/org/OSS/Http/LICENSE @@ -0,0 +1,25 @@ +Copyright (c) 2006-2010 Ryan Parman, Foleeo Inc., and contributors. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are +permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list of + conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this list + of conditions and the following disclaimer in the documentation and/or other materials + provided with the distribution. + + * Neither the name of Ryan Parman, Foleeo Inc. nor the names of its contributors may be used to + endorse or promote products derived from this software without specific prior written + permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS +OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS +AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. diff --git a/resources/org/OSS/Http/RequestCore.php b/resources/org/OSS/Http/RequestCore.php new file mode 100644 index 0000000..06d0f87 --- /dev/null +++ b/resources/org/OSS/Http/RequestCore.php @@ -0,0 +1,896 @@ +). + */ + public $request_class = 'OSS\Http\RequestCore'; + + /** + * The default class to use for HTTP Responses (defaults to ). + */ + public $response_class = 'OSS\Http\ResponseCore'; + + /** + * Default useragent string to use. + */ + public $useragent = 'RequestCore/1.4.3'; + + /** + * File to read from while streaming up. + */ + public $read_file = null; + + /** + * The resource to read from while streaming up. + */ + public $read_stream = null; + + /** + * The size of the stream to read from. + */ + public $read_stream_size = null; + + /** + * The length already read from the stream. + */ + public $read_stream_read = 0; + + /** + * File to write to while streaming down. + */ + public $write_file = null; + + /** + * The resource to write to while streaming down. + */ + public $write_stream = null; + + /** + * Stores the intended starting seek position. + */ + public $seek_position = null; + + /** + * The location of the cacert.pem file to use. + */ + public $cacert_location = false; + + /** + * The state of SSL certificate verification. + */ + public $ssl_verification = true; + + /** + * The user-defined callback function to call when a stream is read from. + */ + public $registered_streaming_read_callback = null; + + /** + * The user-defined callback function to call when a stream is written to. + */ + public $registered_streaming_write_callback = null; + + /** + * 请求超时时间, 默认是5184000秒,6天 + * + * @var int + */ + public $timeout = 5184000; + + /** + * 连接超时时间,默认是10秒 + * + * @var int + */ + public $connect_timeout = 10; + + /*%******************************************************************************************%*/ + // CONSTANTS + + /** + * GET HTTP Method + */ + const HTTP_GET = 'GET'; + + /** + * POST HTTP Method + */ + const HTTP_POST = 'POST'; + + /** + * PUT HTTP Method + */ + const HTTP_PUT = 'PUT'; + + /** + * DELETE HTTP Method + */ + const HTTP_DELETE = 'DELETE'; + + /** + * HEAD HTTP Method + */ + const HTTP_HEAD = 'HEAD'; + + + /*%******************************************************************************************%*/ + // CONSTRUCTOR/DESTRUCTOR + + /** + * Constructs a new instance of this class. + * + * @param string $url (Optional) The URL to request or service endpoint to query. + * @param string $proxy (Optional) The faux-url to use for proxy settings. Takes the following format: `proxy://user:pass@hostname:port` + * @param array $helpers (Optional) An associative array of classnames to use for request, and response functionality. Gets passed in automatically by the calling class. + * @return $this A reference to the current instance. + */ + public function __construct($url = null, $proxy = null, $helpers = null) + { + // Set some default values. + $this->request_url = $url; + $this->method = self::HTTP_GET; + $this->request_headers = array(); + $this->request_body = ''; + + // Set a new Request class if one was set. + if (isset($helpers['request']) && !empty($helpers['request'])) { + $this->request_class = $helpers['request']; + } + + // Set a new Request class if one was set. + if (isset($helpers['response']) && !empty($helpers['response'])) { + $this->response_class = $helpers['response']; + } + + if ($proxy) { + $this->set_proxy($proxy); + } + + return $this; + } + + /** + * Destructs the instance. Closes opened file handles. + * + * @return $this A reference to the current instance. + */ + public function __destruct() + { + if (isset($this->read_file) && isset($this->read_stream)) { + fclose($this->read_stream); + } + + if (isset($this->write_file) && isset($this->write_stream)) { + fclose($this->write_stream); + } + + return $this; + } + + + /*%******************************************************************************************%*/ + // REQUEST METHODS + + /** + * Sets the credentials to use for authentication. + * + * @param string $user (Required) The username to authenticate with. + * @param string $pass (Required) The password to authenticate with. + * @return $this A reference to the current instance. + */ + public function set_credentials($user, $pass) + { + $this->username = $user; + $this->password = $pass; + return $this; + } + + /** + * Adds a custom HTTP header to the cURL request. + * + * @param string $key (Required) The custom HTTP header to set. + * @param mixed $value (Required) The value to assign to the custom HTTP header. + * @return $this A reference to the current instance. + */ + public function add_header($key, $value) + { + $this->request_headers[$key] = $value; + return $this; + } + + /** + * Removes an HTTP header from the cURL request. + * + * @param string $key (Required) The custom HTTP header to set. + * @return $this A reference to the current instance. + */ + public function remove_header($key) + { + if (isset($this->request_headers[$key])) { + unset($this->request_headers[$key]); + } + return $this; + } + + /** + * Set the method type for the request. + * + * @param string $method (Required) One of the following constants: , , , , . + * @return $this A reference to the current instance. + */ + public function set_method($method) + { + $this->method = strtoupper($method); + return $this; + } + + /** + * Sets a custom useragent string for the class. + * + * @param string $ua (Required) The useragent string to use. + * @return $this A reference to the current instance. + */ + public function set_useragent($ua) + { + $this->useragent = $ua; + return $this; + } + + /** + * Set the body to send in the request. + * + * @param string $body (Required) The textual content to send along in the body of the request. + * @return $this A reference to the current instance. + */ + public function set_body($body) + { + $this->request_body = $body; + return $this; + } + + /** + * Set the URL to make the request to. + * + * @param string $url (Required) The URL to make the request to. + * @return $this A reference to the current instance. + */ + public function set_request_url($url) + { + $this->request_url = $url; + return $this; + } + + /** + * Set additional CURLOPT settings. These will merge with the default settings, and override if + * there is a duplicate. + * + * @param array $curlopts (Optional) A set of key-value pairs that set `CURLOPT` options. These will merge with the existing CURLOPTs, and ones passed here will override the defaults. Keys should be the `CURLOPT_*` constants, not strings. + * @return $this A reference to the current instance. + */ + public function set_curlopts($curlopts) + { + $this->curlopts = $curlopts; + return $this; + } + + /** + * Sets the length in bytes to read from the stream while streaming up. + * + * @param integer $size (Required) The length in bytes to read from the stream. + * @return $this A reference to the current instance. + */ + public function set_read_stream_size($size) + { + $this->read_stream_size = $size; + + return $this; + } + + /** + * Sets the resource to read from while streaming up. Reads the stream from its current position until + * EOF or `$size` bytes have been read. If `$size` is not given it will be determined by and + * . + * + * @param resource $resource (Required) The readable resource to read from. + * @param integer $size (Optional) The size of the stream to read. + * @return $this A reference to the current instance. + */ + public function set_read_stream($resource, $size = null) + { + if (!isset($size) || $size < 0) { + $stats = fstat($resource); + + if ($stats && $stats['size'] >= 0) { + $position = ftell($resource); + + if ($position !== false && $position >= 0) { + $size = $stats['size'] - $position; + } + } + } + + $this->read_stream = $resource; + + return $this->set_read_stream_size($size); + } + + /** + * Sets the file to read from while streaming up. + * + * @param string $location (Required) The readable location to read from. + * @return $this A reference to the current instance. + */ + public function set_read_file($location) + { + $this->read_file = $location; + $read_file_handle = fopen($location, 'r'); + + return $this->set_read_stream($read_file_handle); + } + + /** + * Sets the resource to write to while streaming down. + * + * @param resource $resource (Required) The writeable resource to write to. + * @return $this A reference to the current instance. + */ + public function set_write_stream($resource) + { + $this->write_stream = $resource; + + return $this; + } + + /** + * Sets the file to write to while streaming down. + * + * @param string $location (Required) The writeable location to write to. + * @return $this A reference to the current instance. + */ + public function set_write_file($location) + { + $this->write_file = $location; + } + + /** + * Set the proxy to use for making requests. + * + * @param string $proxy (Required) The faux-url to use for proxy settings. Takes the following format: `proxy://user:pass@hostname:port` + * @return $this A reference to the current instance. + */ + public function set_proxy($proxy) + { + $proxy = parse_url($proxy); + $proxy['user'] = isset($proxy['user']) ? $proxy['user'] : null; + $proxy['pass'] = isset($proxy['pass']) ? $proxy['pass'] : null; + $proxy['port'] = isset($proxy['port']) ? $proxy['port'] : null; + $this->proxy = $proxy; + return $this; + } + + /** + * Set the intended starting seek position. + * + * @param integer $position (Required) The byte-position of the stream to begin reading from. + * @return $this A reference to the current instance. + */ + public function set_seek_position($position) + { + $this->seek_position = isset($position) ? (integer)$position : null; + + return $this; + } + + /** + * A callback function that is invoked by cURL for streaming up. + * + * @param resource $curl_handle (Required) The cURL handle for the request. + * @param resource $header_content (Required) The header callback result. + * @return headers from a stream. + */ + public function streaming_header_callback($curl_handle, $header_content) + { + $code = curl_getinfo($curl_handle, CURLINFO_HTTP_CODE); + + if (isset($this->write_file) && intval($code) / 100 == 2 && !isset($this->write_file_handle)) + { + $this->write_file_handle = fopen($this->write_file, 'w'); + $this->set_write_stream($this->write_file_handle); + } + + $this->response_raw_headers .= $header_content; + return strlen($header_content); + } + + + /** + * Register a callback function to execute whenever a data stream is read from using + * . + * + * The user-defined callback function should accept three arguments: + * + *
    + *
  • $curl_handle - resource - Required - The cURL handle resource that represents the in-progress transfer.
  • + *
  • $file_handle - resource - Required - The file handle resource that represents the file on the local file system.
  • + *
  • $length - integer - Required - The length in kilobytes of the data chunk that was transferred.
  • + *
+ * + * @param string|array|function $callback (Required) The callback function is called by , so you can pass the following values:
    + *
  • The name of a global function to execute, passed as a string.
  • + *
  • A method to execute, passed as array('ClassName', 'MethodName').
  • + *
  • An anonymous function (PHP 5.3+).
+ * @return $this A reference to the current instance. + */ + public function register_streaming_read_callback($callback) + { + $this->registered_streaming_read_callback = $callback; + + return $this; + } + + /** + * Register a callback function to execute whenever a data stream is written to using + * . + * + * The user-defined callback function should accept two arguments: + * + *
    + *
  • $curl_handle - resource - Required - The cURL handle resource that represents the in-progress transfer.
  • + *
  • $length - integer - Required - The length in kilobytes of the data chunk that was transferred.
  • + *
+ * + * @param string|array|function $callback (Required) The callback function is called by , so you can pass the following values:
    + *
  • The name of a global function to execute, passed as a string.
  • + *
  • A method to execute, passed as array('ClassName', 'MethodName').
  • + *
  • An anonymous function (PHP 5.3+).
+ * @return $this A reference to the current instance. + */ + public function register_streaming_write_callback($callback) + { + $this->registered_streaming_write_callback = $callback; + + return $this; + } + + + /*%******************************************************************************************%*/ + // PREPARE, SEND, AND PROCESS REQUEST + + /** + * A callback function that is invoked by cURL for streaming up. + * + * @param resource $curl_handle (Required) The cURL handle for the request. + * @param resource $file_handle (Required) The open file handle resource. + * @param integer $length (Required) The maximum number of bytes to read. + * @return binary Binary data from a stream. + */ + public function streaming_read_callback($curl_handle, $file_handle, $length) + { + // Once we've sent as much as we're supposed to send... + if ($this->read_stream_read >= $this->read_stream_size) { + // Send EOF + return ''; + } + + // If we're at the beginning of an upload and need to seek... + if ($this->read_stream_read == 0 && isset($this->seek_position) && $this->seek_position !== ftell($this->read_stream)) { + if (fseek($this->read_stream, $this->seek_position) !== 0) { + throw new RequestCore_Exception('The stream does not support seeking and is either not at the requested position or the position is unknown.'); + } + } + + $read = fread($this->read_stream, min($this->read_stream_size - $this->read_stream_read, $length)); // Remaining upload data or cURL's requested chunk size + $this->read_stream_read += strlen($read); + + $out = $read === false ? '' : $read; + + // Execute callback function + if ($this->registered_streaming_read_callback) { + call_user_func($this->registered_streaming_read_callback, $curl_handle, $file_handle, $out); + } + + return $out; + } + + /** + * A callback function that is invoked by cURL for streaming down. + * + * @param resource $curl_handle (Required) The cURL handle for the request. + * @param binary $data (Required) The data to write. + * @return integer The number of bytes written. + */ + public function streaming_write_callback($curl_handle, $data) + { + $code = curl_getinfo($curl_handle, CURLINFO_HTTP_CODE); + + if (intval($code) / 100 != 2) + { + $this->response_error_body .= $data; + return strlen($data); + } + + $length = strlen($data); + $written_total = 0; + $written_last = 0; + + while ($written_total < $length) { + $written_last = fwrite($this->write_stream, substr($data, $written_total)); + + if ($written_last === false) { + return $written_total; + } + + $written_total += $written_last; + } + + // Execute callback function + if ($this->registered_streaming_write_callback) { + call_user_func($this->registered_streaming_write_callback, $curl_handle, $written_total); + } + + return $written_total; + } + + /** + * Prepares and adds the details of the cURL request. This can be passed along to a + * function. + * + * @return resource The handle for the cURL object. + * + */ + public function prep_request() + { + $curl_handle = curl_init(); + + // Set default options. + curl_setopt($curl_handle, CURLOPT_URL, $this->request_url); + curl_setopt($curl_handle, CURLOPT_FILETIME, true); + curl_setopt($curl_handle, CURLOPT_FRESH_CONNECT, false); +// curl_setopt($curl_handle, CURLOPT_CLOSEPOLICY, CURLCLOSEPOLICY_LEAST_RECENTLY_USED); + curl_setopt($curl_handle, CURLOPT_MAXREDIRS, 5); + curl_setopt($curl_handle, CURLOPT_HEADER, true); + curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, true); + curl_setopt($curl_handle, CURLOPT_TIMEOUT, $this->timeout); + curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, $this->connect_timeout); + curl_setopt($curl_handle, CURLOPT_NOSIGNAL, true); + curl_setopt($curl_handle, CURLOPT_REFERER, $this->request_url); + curl_setopt($curl_handle, CURLOPT_USERAGENT, $this->useragent); + curl_setopt($curl_handle, CURLOPT_HEADERFUNCTION, array($this, 'streaming_header_callback')); + curl_setopt($curl_handle, CURLOPT_READFUNCTION, array($this, 'streaming_read_callback')); + + // Verification of the SSL cert + if ($this->ssl_verification) { + curl_setopt($curl_handle, CURLOPT_SSL_VERIFYPEER, true); + curl_setopt($curl_handle, CURLOPT_SSL_VERIFYHOST, 2); + } else { + curl_setopt($curl_handle, CURLOPT_SSL_VERIFYPEER, false); + curl_setopt($curl_handle, CURLOPT_SSL_VERIFYHOST, false); + } + + // chmod the file as 0755 + if ($this->cacert_location === true) { + curl_setopt($curl_handle, CURLOPT_CAINFO, dirname(__FILE__) . '/cacert.pem'); + } elseif (is_string($this->cacert_location)) { + curl_setopt($curl_handle, CURLOPT_CAINFO, $this->cacert_location); + } + + // Debug mode + if ($this->debug_mode) { + curl_setopt($curl_handle, CURLOPT_VERBOSE, true); + } + + // Handle open_basedir & safe mode + if (!ini_get('safe_mode') && !ini_get('open_basedir')) { + curl_setopt($curl_handle, CURLOPT_FOLLOWLOCATION, true); + } + + // Enable a proxy connection if requested. + if ($this->proxy) { + + $host = $this->proxy['host']; + $host .= ($this->proxy['port']) ? ':' . $this->proxy['port'] : ''; + curl_setopt($curl_handle, CURLOPT_PROXY, $host); + + if (isset($this->proxy['user']) && isset($this->proxy['pass'])) { + curl_setopt($curl_handle, CURLOPT_PROXYUSERPWD, $this->proxy['user'] . ':' . $this->proxy['pass']); + } + } + + // Set credentials for HTTP Basic/Digest Authentication. + if ($this->username && $this->password) { + curl_setopt($curl_handle, CURLOPT_HTTPAUTH, CURLAUTH_ANY); + curl_setopt($curl_handle, CURLOPT_USERPWD, $this->username . ':' . $this->password); + } + + // Handle the encoding if we can. + if (extension_loaded('zlib')) { + curl_setopt($curl_handle, CURLOPT_ENCODING, ''); + } + + // Process custom headers + if (isset($this->request_headers) && count($this->request_headers)) { + $temp_headers = array(); + + foreach ($this->request_headers as $k => $v) { + $temp_headers[] = $k . ': ' . $v; + } + + curl_setopt($curl_handle, CURLOPT_HTTPHEADER, $temp_headers); + } + + switch ($this->method) { + case self::HTTP_PUT: + //unset($this->read_stream); + curl_setopt($curl_handle, CURLOPT_CUSTOMREQUEST, 'PUT'); + if (isset($this->read_stream)) { + if (!isset($this->read_stream_size) || $this->read_stream_size < 0) { + throw new RequestCore_Exception('The stream size for the streaming upload cannot be determined.'); + } + curl_setopt($curl_handle, CURLOPT_INFILESIZE, $this->read_stream_size); + curl_setopt($curl_handle, CURLOPT_UPLOAD, true); + } else { + curl_setopt($curl_handle, CURLOPT_POSTFIELDS, $this->request_body); + } + break; + + case self::HTTP_POST: + curl_setopt($curl_handle, CURLOPT_CUSTOMREQUEST, 'POST'); + if (isset($this->read_stream)) { + if (!isset($this->read_stream_size) || $this->read_stream_size < 0) { + throw new RequestCore_Exception('The stream size for the streaming upload cannot be determined.'); + } + curl_setopt($curl_handle, CURLOPT_INFILESIZE, $this->read_stream_size); + curl_setopt($curl_handle, CURLOPT_UPLOAD, true); + } else { + curl_setopt($curl_handle, CURLOPT_POSTFIELDS, $this->request_body); + } + break; + + case self::HTTP_HEAD: + curl_setopt($curl_handle, CURLOPT_CUSTOMREQUEST, self::HTTP_HEAD); + curl_setopt($curl_handle, CURLOPT_NOBODY, 1); + break; + + default: // Assumed GET + curl_setopt($curl_handle, CURLOPT_CUSTOMREQUEST, $this->method); + if (isset($this->write_stream) || isset($this->write_file)) { + curl_setopt($curl_handle, CURLOPT_WRITEFUNCTION, array($this, 'streaming_write_callback')); + curl_setopt($curl_handle, CURLOPT_HEADER, false); + } else { + curl_setopt($curl_handle, CURLOPT_POSTFIELDS, $this->request_body); + } + break; + } + + // Merge in the CURLOPTs + if (isset($this->curlopts) && sizeof($this->curlopts) > 0) { + foreach ($this->curlopts as $k => $v) { + curl_setopt($curl_handle, $k, $v); + } + } + + return $curl_handle; + } + + /** + * Take the post-processed cURL data and break it down into useful header/body/info chunks. Uses the + * data stored in the `curl_handle` and `response` properties unless replacement data is passed in via + * parameters. + * + * @param resource $curl_handle (Optional) The reference to the already executed cURL request. + * @param string $response (Optional) The actual response content itself that needs to be parsed. + * @return ResponseCore A object containing a parsed HTTP response. + */ + public function process_response($curl_handle = null, $response = null) + { + // Accept a custom one if it's passed. + if ($curl_handle && $response) { + $this->response = $response; + } + + // As long as this came back as a valid resource... + if (is_resource($curl_handle)) { + // Determine what's what. + $header_size = curl_getinfo($curl_handle, CURLINFO_HEADER_SIZE); + $this->response_headers = substr($this->response, 0, $header_size); + $this->response_body = substr($this->response, $header_size); + $this->response_code = curl_getinfo($curl_handle, CURLINFO_HTTP_CODE); + $this->response_info = curl_getinfo($curl_handle); + + if (intval($this->response_code) / 100 != 2 && isset($this->write_file)) + { + $this->response_headers = $this->response_raw_headers; + $this->response_body = $this->response_error_body; + } + + // Parse out the headers + $this->response_headers = explode("\r\n\r\n", trim($this->response_headers)); + $this->response_headers = array_pop($this->response_headers); + $this->response_headers = explode("\r\n", $this->response_headers); + array_shift($this->response_headers); + + // Loop through and split up the headers. + $header_assoc = array(); + foreach ($this->response_headers as $header) { + $kv = explode(': ', $header); + $header_assoc[strtolower($kv[0])] = isset($kv[1]) ? $kv[1] : ''; + } + + // Reset the headers to the appropriate property. + $this->response_headers = $header_assoc; + $this->response_headers['info'] = $this->response_info; + $this->response_headers['info']['method'] = $this->method; + + if ($curl_handle && $response) { + return new ResponseCore($this->response_headers, $this->response_body, $this->response_code); + } + } + + // Return false + return false; + } + + /** + * Sends the request, calling necessary utility functions to update built-in properties. + * + * @param boolean $parse (Optional) Whether to parse the response with ResponseCore or not. + * @return string The resulting unparsed data from the request. + */ + public function send_request($parse = false) + { + set_time_limit(0); + + $curl_handle = $this->prep_request(); + $this->response = curl_exec($curl_handle); + + if ($this->response === false) { + throw new RequestCore_Exception('cURL resource: ' . (string)$curl_handle . '; cURL error: ' . curl_error($curl_handle) . ' (' . curl_errno($curl_handle) . ')'); + } + + $parsed_response = $this->process_response($curl_handle, $this->response); + + curl_close($curl_handle); + + if ($parse) { + return $parsed_response; + } + + return $this->response; + } + + /*%******************************************************************************************%*/ + // RESPONSE METHODS + + /** + * Get the HTTP response headers from the request. + * + * @param string $header (Optional) A specific header value to return. Defaults to all headers. + * @return string|array All or selected header values. + */ + public function get_response_header($header = null) + { + if ($header) { + return $this->response_headers[strtolower($header)]; + } + return $this->response_headers; + } + + /** + * Get the HTTP response body from the request. + * + * @return string The response body. + */ + public function get_response_body() + { + return $this->response_body; + } + + /** + * Get the HTTP response code from the request. + * + * @return string The HTTP response code. + */ + public function get_response_code() + { + return $this->response_code; + } +} diff --git a/resources/org/OSS/Http/RequestCore_Exception.php b/resources/org/OSS/Http/RequestCore_Exception.php new file mode 100644 index 0000000..cb4e83c --- /dev/null +++ b/resources/org/OSS/Http/RequestCore_Exception.php @@ -0,0 +1,8 @@ +). + * @param string $body (Required) XML-formatted response from AWS. + * @param integer $status (Optional) HTTP response status code from the request. + * @return Mixed Contains an `header` property (HTTP headers as an associative array), a or `body` property, and an `status` code. + */ + public function __construct($header, $body, $status = null) + { + $this->header = $header; + $this->body = $body; + $this->status = $status; + + return $this; + } + + /** + * Did we receive the status code we expected? + * + * @param integer|array $codes (Optional) The status code(s) to expect. Pass an for a single acceptable value, or an of integers for multiple acceptable values. + * @return boolean Whether we received the expected status code or not. + */ + public function isOK($codes = array(200, 201, 204, 206)) + { + if (is_array($codes)) { + return in_array($this->status, $codes); + } + + return $this->status === $codes; + } +} \ No newline at end of file diff --git a/resources/org/OSS/Model/BucketInfo.php b/resources/org/OSS/Model/BucketInfo.php new file mode 100644 index 0000000..9b89674 --- /dev/null +++ b/resources/org/OSS/Model/BucketInfo.php @@ -0,0 +1,78 @@ +location = $location; + $this->name = $name; + $this->createDate = $createDate; + } + + /** + * 得到bucket所在的region + * + * @return string + */ + public function getLocation() + { + return $this->location; + } + + /** + * 得到bucket的名称 + * + * @return string + */ + public function getName() + { + return $this->name; + } + + /** + * 得到bucket的创建时间 + * + * @return string + */ + public function getCreateDate() + { + return $this->createDate; + } + + /** + * bucket所在的region + * + * @var string + */ + private $location; + /** + * bucket的名称 + * + * @var string + */ + private $name; + + /** + * bucket的创建事件 + * + * @var string + */ + private $createDate; + +} \ No newline at end of file diff --git a/resources/org/OSS/Model/BucketListInfo.php b/resources/org/OSS/Model/BucketListInfo.php new file mode 100644 index 0000000..910717f --- /dev/null +++ b/resources/org/OSS/Model/BucketListInfo.php @@ -0,0 +1,39 @@ +bucketList = $bucketList; + } + + /** + * 得到BucketInfo列表 + * + * @return BucketInfo[] + */ + public function getBucketList() + { + return $this->bucketList; + } + + /** + * BucketInfo信息列表 + * + * @var array + */ + private $bucketList = array(); +} \ No newline at end of file diff --git a/resources/org/OSS/Model/CnameConfig.php b/resources/org/OSS/Model/CnameConfig.php new file mode 100644 index 0000000..f3597d2 --- /dev/null +++ b/resources/org/OSS/Model/CnameConfig.php @@ -0,0 +1,99 @@ +cnameList = array(); + } + + /** + * @return array + * @example + * array(2) { + * [0]=> + * array(3) { + * ["Domain"]=> + * string(11) "www.foo.com" + * ["Status"]=> + * string(7) "enabled" + * ["LastModified"]=> + * string(8) "20150101" + * } + * [1]=> + * array(3) { + * ["Domain"]=> + * string(7) "bar.com" + * ["Status"]=> + * string(8) "disabled" + * ["LastModified"]=> + * string(8) "20160101" + * } + * } + */ + public function getCnames() + { + return $this->cnameList; + } + + + public function addCname($cname) + { + if (count($this->cnameList) >= self::OSS_MAX_RULES) { + throw new OssException( + "num of cname in the config exceeds self::OSS_MAX_RULES: " . strval(self::OSS_MAX_RULES)); + } + $this->cnameList[] = array('Domain' => $cname); + } + + public function parseFromXml($strXml) + { + $xml = simplexml_load_string($strXml); + if (!isset($xml->Cname)) return; + foreach ($xml->Cname as $entry) { + $cname = array(); + foreach ($entry as $key => $value) { + $cname[strval($key)] = strval($value); + } + $this->cnameList[] = $cname; + } + } + + public function serializeToXml() + { + $strXml = << + + +EOF; + $xml = new \SimpleXMLElement($strXml); + foreach ($this->cnameList as $cname) { + $node = $xml->addChild('Cname'); + foreach ($cname as $key => $value) { + $node->addChild($key, $value); + } + } + return $xml->asXML(); + } + + public function __toString() + { + return $this->serializeToXml(); + } + + const OSS_MAX_RULES = 10; + + private $cnameList = array(); +} \ No newline at end of file diff --git a/resources/org/OSS/Model/CorsConfig.php b/resources/org/OSS/Model/CorsConfig.php new file mode 100644 index 0000000..c44c10a --- /dev/null +++ b/resources/org/OSS/Model/CorsConfig.php @@ -0,0 +1,113 @@ +rules = array(); + } + + /** + * 得到CorsRule列表 + * + * @return CorsRule[] + */ + public function getRules() + { + return $this->rules; + } + + + /** + * 添加一条CorsRule + * + * @param CorsRule $rule + * @throws OssException + */ + public function addRule($rule) + { + if (count($this->rules) >= self::OSS_MAX_RULES) { + throw new OssException("num of rules in the config exceeds self::OSS_MAX_RULES: " . strval(self::OSS_MAX_RULES)); + } + $this->rules[] = $rule; + } + + /** + * 从xml数据中解析出CorsConfig + * + * @param string $strXml + * @throws OssException + * @return null + */ + public function parseFromXml($strXml) + { + $xml = simplexml_load_string($strXml); + if (!isset($xml->CORSRule)) return; + foreach ($xml->CORSRule as $rule) { + $corsRule = new CorsRule(); + foreach ($rule as $key => $value) { + if ($key === self::OSS_CORS_ALLOWED_HEADER) { + $corsRule->addAllowedHeader(strval($value)); + } elseif ($key === self::OSS_CORS_ALLOWED_METHOD) { + $corsRule->addAllowedMethod(strval($value)); + } elseif ($key === self::OSS_CORS_ALLOWED_ORIGIN) { + $corsRule->addAllowedOrigin(strval($value)); + } elseif ($key === self::OSS_CORS_EXPOSE_HEADER) { + $corsRule->addExposeHeader(strval($value)); + } elseif ($key === self::OSS_CORS_MAX_AGE_SECONDS) { + $corsRule->setMaxAgeSeconds(strval($value)); + } + } + $this->addRule($corsRule); + } + return; + } + + /** + * 生成xml字符串 + * + * @return string + */ + public function serializeToXml() + { + $xml = new \SimpleXMLElement(''); + foreach ($this->rules as $rule) { + $xmlRule = $xml->addChild('CORSRule'); + $rule->appendToXml($xmlRule); + } + return $xml->asXML(); + } + + public function __toString() + { + return $this->serializeToXml(); + } + + const OSS_CORS_ALLOWED_ORIGIN = 'AllowedOrigin'; + const OSS_CORS_ALLOWED_METHOD = 'AllowedMethod'; + const OSS_CORS_ALLOWED_HEADER = 'AllowedHeader'; + const OSS_CORS_EXPOSE_HEADER = 'ExposeHeader'; + const OSS_CORS_MAX_AGE_SECONDS = 'MaxAgeSeconds'; + const OSS_MAX_RULES = 10; + + /** + * orsRule列表 + * + * @var CorsRule[] + */ + private $rules = array(); +} \ No newline at end of file diff --git a/resources/org/OSS/Model/CorsRule.php b/resources/org/OSS/Model/CorsRule.php new file mode 100644 index 0000000..2cbe1c1 --- /dev/null +++ b/resources/org/OSS/Model/CorsRule.php @@ -0,0 +1,150 @@ +allowedOrigins[] = $allowedOrigin; + } + } + + /** + * Rule中增加一条allowedMethod + * + * @param string $allowedMethod + */ + public function addAllowedMethod($allowedMethod) + { + if (!empty($allowedMethod)) { + $this->allowedMethods[] = $allowedMethod; + } + } + + /** + * Rule中增加一条allowedHeader + * + * @param string $allowedHeader + */ + public function addAllowedHeader($allowedHeader) + { + if (!empty($allowedHeader)) { + $this->allowedHeaders[] = $allowedHeader; + } + } + + /** + * Rule中增加一条exposeHeader + * + * @param string $exposeHeader + */ + public function addExposeHeader($exposeHeader) + { + if (!empty($exposeHeader)) { + $this->exposeHeaders[] = $exposeHeader; + } + } + + /** + * @return int + */ + public function getMaxAgeSeconds() + { + return $this->maxAgeSeconds; + } + + /** + * @param int $maxAgeSeconds + */ + public function setMaxAgeSeconds($maxAgeSeconds) + { + $this->maxAgeSeconds = $maxAgeSeconds; + } + + /** + * 得到AllowedHeaders列表 + * + * @return string[] + */ + public function getAllowedHeaders() + { + return $this->allowedHeaders; + } + + /** + * 得到AllowedOrigins列表 + * + * @return string[] + */ + public function getAllowedOrigins() + { + return $this->allowedOrigins; + } + + /** + * 得到AllowedMethods列表 + * + * @return string[] + */ + public function getAllowedMethods() + { + return $this->allowedMethods; + } + + /** + * 得到ExposeHeaders列表 + * + * @return string[] + */ + public function getExposeHeaders() + { + return $this->exposeHeaders; + } + + /** + * 根据提供的xmlRule, 把this按照一定的规则插入到$xmlRule中 + * + * @param \SimpleXMLElement $xmlRule + * @throws OssException + */ + public function appendToXml(&$xmlRule) + { + if (!isset($this->maxAgeSeconds)) { + throw new OssException("maxAgeSeconds is not set in the Rule"); + } + foreach ($this->allowedOrigins as $allowedOrigin) { + $xmlRule->addChild(CorsConfig::OSS_CORS_ALLOWED_ORIGIN, $allowedOrigin); + } + foreach ($this->allowedMethods as $allowedMethod) { + $xmlRule->addChild(CorsConfig::OSS_CORS_ALLOWED_METHOD, $allowedMethod); + } + foreach ($this->allowedHeaders as $allowedHeader) { + $xmlRule->addChild(CorsConfig::OSS_CORS_ALLOWED_HEADER, $allowedHeader); + } + foreach ($this->exposeHeaders as $exposeHeader) { + $xmlRule->addChild(CorsConfig::OSS_CORS_EXPOSE_HEADER, $exposeHeader); + } + $xmlRule->addChild(CorsConfig::OSS_CORS_MAX_AGE_SECONDS, strval($this->maxAgeSeconds)); + } + + private $allowedHeaders = array(); + private $allowedOrigins = array(); + private $allowedMethods = array(); + private $exposeHeaders = array(); + private $maxAgeSeconds = null; +} \ No newline at end of file diff --git a/resources/org/OSS/Model/GetLiveChannelHistory.php b/resources/org/OSS/Model/GetLiveChannelHistory.php new file mode 100644 index 0000000..6643444 --- /dev/null +++ b/resources/org/OSS/Model/GetLiveChannelHistory.php @@ -0,0 +1,34 @@ +liveRecordList; + } + + public function parseFromXml($strXml) + { + $xml = simplexml_load_string($strXml); + + if (isset($xml->LiveRecord)) { + foreach ($xml->LiveRecord as $record) { + $liveRecord = new LiveChannelHistory(); + $liveRecord->parseFromXmlNode($record); + $this->liveRecordList[] = $liveRecord; + } + } + } + + public function serializeToXml() + { + throw new OssException("Not implemented."); + } + + private $liveRecordList = array(); +} diff --git a/resources/org/OSS/Model/GetLiveChannelInfo.php b/resources/org/OSS/Model/GetLiveChannelInfo.php new file mode 100644 index 0000000..0b5edfc --- /dev/null +++ b/resources/org/OSS/Model/GetLiveChannelInfo.php @@ -0,0 +1,68 @@ +description; + } + + public function getStatus() + { + return $this->status; + } + + public function getType() + { + return $this->type; + } + + public function getFragDuration() + { + return $this->fragDuration; + } + + public function getFragCount() + { + return $this->fragCount; + } + + public function getPlayListName() + { + return $this->playlistName; + } + + public function parseFromXml($strXml) + { + $xml = simplexml_load_string($strXml); + + $this->description = strval($xml->Description); + $this->status = strval($xml->Status); + + if (isset($xml->Target)) { + foreach ($xml->Target as $target) { + $this->type = strval($target->Type); + $this->fragDuration = strval($target->FragDuration); + $this->fragCount = strval($target->FragCount); + $this->playlistName = strval($target->PlaylistName); + } + } + } + + public function serializeToXml() + { + throw new OssException("Not implemented."); + } + + private $description; + private $status; + private $type; + private $fragDuration; + private $fragCount; + private $playlistName; +} diff --git a/resources/org/OSS/Model/GetLiveChannelStatus.php b/resources/org/OSS/Model/GetLiveChannelStatus.php new file mode 100644 index 0000000..2ee7a68 --- /dev/null +++ b/resources/org/OSS/Model/GetLiveChannelStatus.php @@ -0,0 +1,107 @@ +status; + } + + public function getConnectedTime() + { + return $this->connectedTime; + } + + public function getRemoteAddr() + { + return $this->remoteAddr; + } + + public function getVideoWidth() + { + return $this->videoWidth; + } + public function getVideoHeight() + { + return $this->videoHeight; + } + public function getVideoFrameRate() + { + return $this->videoFrameRate; + } + public function getVideoBandwidth() + { + return $this->videoBandwidth; + } + public function getVideoCodec() + { + return $this->videoCodec; + } + + public function getAudioBandwidth() + { + return $this->audioBandwidth; + } + public function getAudioSampleRate() + { + return $this->audioSampleRate; + } + public function getAudioCodec() + { + return $this->audioCodec; + } + + + public function parseFromXml($strXml) + { + $xml = simplexml_load_string($strXml); + $this->status = strval($xml->Status); + $this->connectedTime = strval($xml->ConnectedTime); + $this->remoteAddr = strval($xml->RemoteAddr); + + if (isset($xml->Video)) { + foreach ($xml->Video as $video) { + $this->videoWidth = intval($video->Width); + $this->videoHeight = intval($video->Height); + $this->videoFrameRate = intval($video->FrameRate); + $this->videoBandwidth = intval($video->Bandwidth); + $this->videoCodec = strval($video->Codec); + } + } + + if (isset($xml->Video)) { + foreach ($xml->Audio as $audio) { + $this->audioBandwidth = intval($audio->Bandwidth); + $this->audioSampleRate = intval($audio->SampleRate); + $this->audioCodec = strval($audio->Codec); + } + } + + } + + public function serializeToXml() + { + throw new OssException("Not implemented."); + } + + private $status; + private $connectedTime; + private $remoteAddr; + + private $videoWidth; + private $videoHeight; + private $videoFrameRate; + private $videoBandwidth; + private $videoCodec; + + private $audioBandwidth; + private $audioSampleRate; + private $audioCodec; + + +} diff --git a/resources/org/OSS/Model/LifecycleAction.php b/resources/org/OSS/Model/LifecycleAction.php new file mode 100644 index 0000000..5abd825 --- /dev/null +++ b/resources/org/OSS/Model/LifecycleAction.php @@ -0,0 +1,88 @@ +action = $action; + $this->timeSpec = $timeSpec; + $this->timeValue = $timeValue; + } + + /** + * @return LifecycleAction + */ + public function getAction() + { + return $this->action; + } + + /** + * @param string $action + */ + public function setAction($action) + { + $this->action = $action; + } + + /** + * @return string + */ + public function getTimeSpec() + { + return $this->timeSpec; + } + + /** + * @param string $timeSpec + */ + public function setTimeSpec($timeSpec) + { + $this->timeSpec = $timeSpec; + } + + /** + * @return string + */ + public function getTimeValue() + { + return $this->timeValue; + } + + /** + * @param string $timeValue + */ + public function setTimeValue($timeValue) + { + $this->timeValue = $timeValue; + } + + /** + * appendToXml 把actions插入到xml中 + * + * @param \SimpleXMLElement $xmlRule + */ + public function appendToXml(&$xmlRule) + { + $xmlAction = $xmlRule->addChild($this->action); + $xmlAction->addChild($this->timeSpec, $this->timeValue); + } + + private $action; + private $timeSpec; + private $timeValue; + +} \ No newline at end of file diff --git a/resources/org/OSS/Model/LifecycleConfig.php b/resources/org/OSS/Model/LifecycleConfig.php new file mode 100644 index 0000000..fc4f575 --- /dev/null +++ b/resources/org/OSS/Model/LifecycleConfig.php @@ -0,0 +1,107 @@ +rules = array(); + $xml = simplexml_load_string($strXml); + if (!isset($xml->Rule)) return; + $this->rules = array(); + foreach ($xml->Rule as $rule) { + $id = strval($rule->ID); + $prefix = strval($rule->Prefix); + $status = strval($rule->Status); + $actions = array(); + foreach ($rule as $key => $value) { + if ($key === 'ID' || $key === 'Prefix' || $key === 'Status') continue; + $action = $key; + $timeSpec = null; + $timeValue = null; + foreach ($value as $timeSpecKey => $timeValueValue) { + $timeSpec = $timeSpecKey; + $timeValue = strval($timeValueValue); + } + $actions[] = new LifecycleAction($action, $timeSpec, $timeValue); + } + $this->rules[] = new LifecycleRule($id, $prefix, $status, $actions); + } + return; + } + + + /** + * 生成xml字符串 + * + * @return string + */ + public function serializeToXml() + { + + $xml = new \SimpleXMLElement(''); + foreach ($this->rules as $rule) { + $xmlRule = $xml->addChild('Rule'); + $rule->appendToXml($xmlRule); + } + return $xml->asXML(); + } + + /** + * + * 添加LifecycleRule + * + * @param LifecycleRule $lifecycleRule + * @throws OssException + */ + public function addRule($lifecycleRule) + { + if (!isset($lifecycleRule)) { + throw new OssException("lifecycleRule is null"); + } + $this->rules[] = $lifecycleRule; + } + + /** + * 将配置转换成字符串,便于用户查看 + * + * @return string + */ + public function __toString() + { + return $this->serializeToXml(); + } + + /** + * 得到所有的生命周期规则 + * + * @return LifecycleRule[] + */ + public function getRules() + { + return $this->rules; + } + + /** + * @var LifecycleRule[] + */ + private $rules; +} + + diff --git a/resources/org/OSS/Model/LifecycleRule.php b/resources/org/OSS/Model/LifecycleRule.php new file mode 100644 index 0000000..ec615b9 --- /dev/null +++ b/resources/org/OSS/Model/LifecycleRule.php @@ -0,0 +1,126 @@ +id; + } + + /** + * @param string $id 规则ID + */ + public function setId($id) + { + $this->id = $id; + } + + /** + * 得到文件前缀 + * + * @return string + */ + public function getPrefix() + { + return $this->prefix; + } + + /** + * 设置文件前缀 + * + * @param string $prefix 文件前缀 + */ + public function setPrefix($prefix) + { + $this->prefix = $prefix; + } + + /** + * Lifecycle规则的状态 + * + * @return string + */ + public function getStatus() + { + return $this->status; + } + + /** + * 设置Lifecycle规则状态 + * + * @param string $status + */ + public function setStatus($status) + { + $this->status = $status; + } + + /** + * + * @return LifecycleAction[] + */ + public function getActions() + { + return $this->actions; + } + + /** + * @param LifecycleAction[] $actions + */ + public function setActions($actions) + { + $this->actions = $actions; + } + + + /** + * LifecycleRule constructor. + * + * @param string $id 规则ID + * @param string $prefix 文件前缀 + * @param string $status 规则状态,可选[self::LIFECYCLE_STATUS_ENABLED, self::LIFECYCLE_STATUS_DISABLED] + * @param LifecycleAction[] $actions + */ + public function __construct($id, $prefix, $status, $actions) + { + $this->id = $id; + $this->prefix = $prefix; + $this->status = $status; + $this->actions = $actions; + } + + /** + * @param \SimpleXMLElement $xmlRule + */ + public function appendToXml(&$xmlRule) + { + $xmlRule->addChild('ID', $this->id); + $xmlRule->addChild('Prefix', $this->prefix); + $xmlRule->addChild('Status', $this->status); + foreach ($this->actions as $action) { + $action->appendToXml($xmlRule); + } + } + + private $id; + private $prefix; + private $status; + private $actions = array(); + + const LIFECYCLE_STATUS_ENABLED = 'Enabled'; + const LIFECYCLE_STATUS_DISABLED = 'Disabled'; +} \ No newline at end of file diff --git a/resources/org/OSS/Model/ListMultipartUploadInfo.php b/resources/org/OSS/Model/ListMultipartUploadInfo.php new file mode 100644 index 0000000..105d005 --- /dev/null +++ b/resources/org/OSS/Model/ListMultipartUploadInfo.php @@ -0,0 +1,134 @@ +bucket = $bucket; + $this->keyMarker = $keyMarker; + $this->uploadIdMarker = $uploadIdMarker; + $this->nextKeyMarker = $nextKeyMarker; + $this->nextUploadIdMarker = $nextUploadIdMarker; + $this->delimiter = $delimiter; + $this->prefix = $prefix; + $this->maxUploads = $maxUploads; + $this->isTruncated = $isTruncated; + $this->uploads = $uploads; + } + + /** + * 得到bucket名称 + * + * @return string + */ + public function getBucket() + { + return $this->bucket; + } + + /** + * @return string + */ + public function getKeyMarker() + { + return $this->keyMarker; + } + + /** + * + * @return string + */ + public function getUploadIdMarker() + { + return $this->uploadIdMarker; + } + + /** + * @return string + */ + public function getNextKeyMarker() + { + return $this->nextKeyMarker; + } + + /** + * @return string + */ + public function getNextUploadIdMarker() + { + return $this->nextUploadIdMarker; + } + + /** + * @return string + */ + public function getDelimiter() + { + return $this->delimiter; + } + + /** + * @return string + */ + public function getPrefix() + { + return $this->prefix; + } + + /** + * @return int + */ + public function getMaxUploads() + { + return $this->maxUploads; + } + + /** + * @return string + */ + public function getIsTruncated() + { + return $this->isTruncated; + } + + /** + * @return UploadInfo[] + */ + public function getUploads() + { + return $this->uploads; + } + + private $bucket = ""; + private $keyMarker = ""; + private $uploadIdMarker = ""; + private $nextKeyMarker = ""; + private $nextUploadIdMarker = ""; + private $delimiter = ""; + private $prefix = ""; + private $maxUploads = 0; + private $isTruncated = "false"; + private $uploads = array(); +} \ No newline at end of file diff --git a/resources/org/OSS/Model/ListPartsInfo.php b/resources/org/OSS/Model/ListPartsInfo.php new file mode 100644 index 0000000..f1d10ee --- /dev/null +++ b/resources/org/OSS/Model/ListPartsInfo.php @@ -0,0 +1,97 @@ +bucket = $bucket; + $this->key = $key; + $this->uploadId = $uploadId; + $this->nextPartNumberMarker = $nextPartNumberMarker; + $this->maxParts = $maxParts; + $this->isTruncated = $isTruncated; + $this->listPart = $listPart; + } + + /** + * @return string + */ + public function getBucket() + { + return $this->bucket; + } + + /** + * @return string + */ + public function getKey() + { + return $this->key; + } + + /** + * @return string + */ + public function getUploadId() + { + return $this->uploadId; + } + + /** + * @return int + */ + public function getNextPartNumberMarker() + { + return $this->nextPartNumberMarker; + } + + /** + * @return int + */ + public function getMaxParts() + { + return $this->maxParts; + } + + /** + * @return string + */ + public function getIsTruncated() + { + return $this->isTruncated; + } + + /** + * @return array + */ + public function getListPart() + { + return $this->listPart; + } + + private $bucket = ""; + private $key = ""; + private $uploadId = ""; + private $nextPartNumberMarker = 0; + private $maxParts = 0; + private $isTruncated = ""; + private $listPart = array(); +} \ No newline at end of file diff --git a/resources/org/OSS/Model/LiveChannelConfig.php b/resources/org/OSS/Model/LiveChannelConfig.php new file mode 100644 index 0000000..dadedc9 --- /dev/null +++ b/resources/org/OSS/Model/LiveChannelConfig.php @@ -0,0 +1,121 @@ +description = $option['description']; + } + if (isset($option['status'])) { + $this->status = $option['status']; + } + if (isset($option['type'])) { + $this->type = $option['type']; + } + if (isset($option['fragDuration'])) { + $this->fragDuration = $option['fragDuration']; + } + if (isset($option['fragCount'])) { + $this->fragCount = $option['fragCount']; + } + if (isset($option['playListName'])) { + $this->playListName = $option['playListName']; + } + } + + public function getDescription() + { + return $this->description; + } + + public function getStatus() + { + return $this->status; + } + + public function getType() + { + return $this->type; + } + + public function getFragDuration() + { + return $this->fragDuration; + } + + public function getFragCount() + { + return $this->fragCount; + } + + public function getPlayListName() + { + return $this->playListName; + } + + public function parseFromXml($strXml) + { + $xml = simplexml_load_string($strXml); + $this->description = strval($xml->Description); + $this->status = strval($xml->Status); + $target = $xml->Target; + $this->type = strval($target->Type); + $this->fragDuration = intval($target->FragDuration); + $this->fragCount = intval($target->FragCount); + $this->playListName = strval($target->PlayListName); + } + + public function serializeToXml() + { + $strXml = << + + +EOF; + $xml = new \SimpleXMLElement($strXml); + if (isset($this->description)) { + $xml->addChild('Description', $this->description); + } + + if (isset($this->status)) { + $xml->addChild('Status', $this->status); + } + + $node = $xml->addChild('Target'); + $node->addChild('Type', $this->type); + + if (isset($this->fragDuration)) { + $node->addChild('FragDuration', $this->fragDuration); + } + + if (isset($this->fragCount)) { + $node->addChild('FragCount', $this->fragCount); + } + + if (isset($this->playListName)) { + $node->addChild('PlayListName', $this->playListName); + } + + return $xml->asXML(); + } + + public function __toString() + { + return $this->serializeToXml(); + } + + private $description; + private $status = "enabled"; + private $type; + private $fragDuration = 5; + private $fragCount = 3; + private $playListName = "playlist.m3u8"; +} diff --git a/resources/org/OSS/Model/LiveChannelHistory.php b/resources/org/OSS/Model/LiveChannelHistory.php new file mode 100644 index 0000000..1c1fd4d --- /dev/null +++ b/resources/org/OSS/Model/LiveChannelHistory.php @@ -0,0 +1,59 @@ +startTime; + } + + public function getEndTime() + { + return $this->endTime; + } + + public function getRemoteAddr() + { + return $this->remoteAddr; + } + + public function parseFromXmlNode($xml) + { + if (isset($xml->StartTime)) { + $this->startTime = strval($xml->StartTime); + } + + if (isset($xml->EndTime)) { + $this->endTime = strval($xml->EndTime); + } + + if (isset($xml->RemoteAddr)) { + $this->remoteAddr = strval($xml->RemoteAddr); + } + } + + public function parseFromXml($strXml) + { + $xml = simplexml_load_string($strXml); + $this->parseFromXmlNode($xml); + } + + public function serializeToXml() + { + throw new OssException("Not implemented."); + } + + private $startTime; + private $endTime; + private $remoteAddr; +} diff --git a/resources/org/OSS/Model/LiveChannelInfo.php b/resources/org/OSS/Model/LiveChannelInfo.php new file mode 100644 index 0000000..c63ec54 --- /dev/null +++ b/resources/org/OSS/Model/LiveChannelInfo.php @@ -0,0 +1,107 @@ +name = $name; + $this->description = $description; + $this->publishUrls = array(); + $this->playUrls = array(); + } + + public function getName() + { + return $this->name; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getPublishUrls() + { + return $this->publishUrls; + } + + public function getPlayUrls() + { + return $this->playUrls; + } + + public function getStatus() + { + return $this->status; + } + + public function getLastModified() + { + return $this->lastModified; + } + + public function getDescription() + { + return $this->description; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function parseFromXmlNode($xml) + { + if (isset($xml->Name)) { + $this->name = strval($xml->Name); + } + + if (isset($xml->Description)) { + $this->description = strval($xml->Description); + } + + if (isset($xml->Status)) { + $this->status = strval($xml->Status); + } + + if (isset($xml->LastModified)) { + $this->lastModified = strval($xml->LastModified); + } + + if (isset($xml->PublishUrls)) { + foreach ($xml->PublishUrls as $url) { + $this->publishUrls[] = strval($url->Url); + } + } + + if (isset($xml->PlayUrls)) { + foreach ($xml->PlayUrls as $url) { + $this->playUrls[] = strval($url->Url); + } + } + } + + public function parseFromXml($strXml) + { + $xml = simplexml_load_string($strXml); + $this->parseFromXmlNode($xml); + } + + public function serializeToXml() + { + throw new OssException("Not implemented."); + } + + private $name; + private $description; + private $publishUrls; + private $playUrls; + private $status; + private $lastModified; +} diff --git a/resources/org/OSS/Model/LiveChannelListInfo.php b/resources/org/OSS/Model/LiveChannelListInfo.php new file mode 100644 index 0000000..bb5093a --- /dev/null +++ b/resources/org/OSS/Model/LiveChannelListInfo.php @@ -0,0 +1,107 @@ +bucket; + } + + public function setBucketName($name) + { + $this->bucket = $name; + } + + /** + * @return string + */ + public function getPrefix() + { + return $this->prefix; + } + + /** + * @return string + */ + public function getMarker() + { + return $this->marker; + } + + /** + * @return int + */ + public function getMaxKeys() + { + return $this->maxKeys; + } + + /** + * @return mixed + */ + public function getIsTruncated() + { + return $this->isTruncated; + } + + /** + * @return LiveChannelInfo[] + */ + public function getChannelList() + { + return $this->channelList; + } + + /** + * @return string + */ + public function getNextMarker() + { + return $this->nextMarker; + } + + public function parseFromXml($strXml) + { + $xml = simplexml_load_string($strXml); + + $this->prefix = strval($xml->Prefix); + $this->marker = strval($xml->Marker); + $this->maxKeys = intval($xml->MaxKeys); + $this->isTruncated = (strval($xml->IsTruncated) == 'true'); + $this->nextMarker = strval($xml->NextMarker); + + if (isset($xml->LiveChannel)) { + foreach ($xml->LiveChannel as $chan) { + $channel = new LiveChannelInfo(); + $channel->parseFromXmlNode($chan); + $this->channelList[] = $channel; + } + } + } + + public function serializeToXml() + { + throw new OssException("Not implemented."); + } + + private $bucket = ''; + private $prefix = ''; + private $marker = ''; + private $nextMarker = ''; + private $maxKeys = 100; + private $isTruncated = 'false'; + private $channelList = array(); +} diff --git a/resources/org/OSS/Model/LoggingConfig.php b/resources/org/OSS/Model/LoggingConfig.php new file mode 100644 index 0000000..978421a --- /dev/null +++ b/resources/org/OSS/Model/LoggingConfig.php @@ -0,0 +1,86 @@ +targetBucket = $targetBucket; + $this->targetPrefix = $targetPrefix; + } + + /** + * @param $strXml + * @return null + */ + public function parseFromXml($strXml) + { + $xml = simplexml_load_string($strXml); + if (!isset($xml->LoggingEnabled)) return; + foreach ($xml->LoggingEnabled as $status) { + foreach ($status as $key => $value) { + if ($key === 'TargetBucket') { + $this->targetBucket = strval($value); + } elseif ($key === 'TargetPrefix') { + $this->targetPrefix = strval($value); + } + } + break; + } + } + + /** + * 序列化成xml字符串 + * + */ + public function serializeToXml() + { + $xml = new \SimpleXMLElement(''); + if (isset($this->targetBucket) && isset($this->targetPrefix)) { + $loggingEnabled = $xml->addChild('LoggingEnabled'); + $loggingEnabled->addChild('TargetBucket', $this->targetBucket); + $loggingEnabled->addChild('TargetPrefix', $this->targetPrefix); + } + return $xml->asXML(); + } + + /** + * @return string + */ + public function __toString() + { + return $this->serializeToXml(); + } + + /** + * @return string + */ + public function getTargetBucket() + { + return $this->targetBucket; + } + + /** + * @return string + */ + public function getTargetPrefix() + { + return $this->targetPrefix; + } + + private $targetBucket = ""; + private $targetPrefix = ""; + +} \ No newline at end of file diff --git a/resources/org/OSS/Model/ObjectInfo.php b/resources/org/OSS/Model/ObjectInfo.php new file mode 100644 index 0000000..2ae6c99 --- /dev/null +++ b/resources/org/OSS/Model/ObjectInfo.php @@ -0,0 +1,93 @@ +key = $key; + $this->lastModified = $lastModified; + $this->eTag = $eTag; + $this->type = $type; + $this->size = $size; + $this->storageClass = $storageClass; + } + + /** + * @return string + */ + public function getKey() + { + return $this->key; + } + + /** + * @return string + */ + public function getLastModified() + { + return $this->lastModified; + } + + /** + * @return string + */ + public function getETag() + { + return $this->eTag; + } + + /** + * @return string + */ + public function getType() + { + return $this->type; + } + + /** + * @return int + */ + public function getSize() + { + return $this->size; + } + + /** + * @return string + */ + public function getStorageClass() + { + return $this->storageClass; + } + + private $key = ""; + private $lastModified = ""; + private $eTag = ""; + private $type = ""; + private $size = 0; + private $storageClass = ""; +} \ No newline at end of file diff --git a/resources/org/OSS/Model/ObjectListInfo.php b/resources/org/OSS/Model/ObjectListInfo.php new file mode 100644 index 0000000..dbe7c7a --- /dev/null +++ b/resources/org/OSS/Model/ObjectListInfo.php @@ -0,0 +1,126 @@ +bucketName = $bucketName; + $this->prefix = $prefix; + $this->marker = $marker; + $this->nextMarker = $nextMarker; + $this->maxKeys = $maxKeys; + $this->delimiter = $delimiter; + $this->isTruncated = $isTruncated; + $this->objectList = $objectList; + $this->prefixList = $prefixList; + } + + /** + * @return string + */ + public function getBucketName() + { + return $this->bucketName; + } + + /** + * @return string + */ + public function getPrefix() + { + return $this->prefix; + } + + /** + * @return string + */ + public function getMarker() + { + return $this->marker; + } + + /** + * @return int + */ + public function getMaxKeys() + { + return $this->maxKeys; + } + + /** + * @return string + */ + public function getDelimiter() + { + return $this->delimiter; + } + + /** + * @return mixed + */ + public function getIsTruncated() + { + return $this->isTruncated; + } + + /** + * 返回ListObjects接口返回数据中的ObjectInfo列表 + * + * @return ObjectInfo[] + */ + public function getObjectList() + { + return $this->objectList; + } + + /** + * 返回ListObjects接口返回数据中的PrefixInfo列表 + * + * @return PrefixInfo[] + */ + public function getPrefixList() + { + return $this->prefixList; + } + + /** + * @return string + */ + public function getNextMarker() + { + return $this->nextMarker; + } + + private $bucketName = ""; + private $prefix = ""; + private $marker = ""; + private $nextMarker = ""; + private $maxKeys = 0; + private $delimiter = ""; + private $isTruncated = null; + private $objectList = array(); + private $prefixList = array(); +} \ No newline at end of file diff --git a/resources/org/OSS/Model/PartInfo.php b/resources/org/OSS/Model/PartInfo.php new file mode 100644 index 0000000..439a84d --- /dev/null +++ b/resources/org/OSS/Model/PartInfo.php @@ -0,0 +1,63 @@ +partNumber = $partNumber; + $this->lastModified = $lastModified; + $this->eTag = $eTag; + $this->size = $size; + } + + /** + * @return int + */ + public function getPartNumber() + { + return $this->partNumber; + } + + /** + * @return string + */ + public function getLastModified() + { + return $this->lastModified; + } + + /** + * @return string + */ + public function getETag() + { + return $this->eTag; + } + + /** + * @return int + */ + public function getSize() + { + return $this->size; + } + + private $partNumber = 0; + private $lastModified = ""; + private $eTag = ""; + private $size = 0; +} \ No newline at end of file diff --git a/resources/org/OSS/Model/PrefixInfo.php b/resources/org/OSS/Model/PrefixInfo.php new file mode 100644 index 0000000..e61eac4 --- /dev/null +++ b/resources/org/OSS/Model/PrefixInfo.php @@ -0,0 +1,36 @@ +prefix = $prefix; + } + + /** + * @return string + */ + public function getPrefix() + { + return $this->prefix; + } + + private $prefix; +} \ No newline at end of file diff --git a/resources/org/OSS/Model/RefererConfig.php b/resources/org/OSS/Model/RefererConfig.php new file mode 100644 index 0000000..1d7d975 --- /dev/null +++ b/resources/org/OSS/Model/RefererConfig.php @@ -0,0 +1,93 @@ +AllowEmptyReferer)) return; + if (!isset($xml->RefererList)) return; + $this->allowEmptyReferer = + (strval($xml->AllowEmptyReferer) === 'TRUE' || strval($xml->AllowEmptyReferer) === 'true') ? true : false; + + foreach ($xml->RefererList->Referer as $key => $refer) { + $this->refererList[] = strval($refer); + } + } + + + /** + * 把RefererConfig序列化成xml + * + * @return string + */ + public function serializeToXml() + { + $xml = new \SimpleXMLElement(''); + if ($this->allowEmptyReferer) { + $xml->addChild('AllowEmptyReferer', 'true'); + } else { + $xml->addChild('AllowEmptyReferer', 'false'); + } + $refererList = $xml->addChild('RefererList'); + foreach ($this->refererList as $referer) { + $refererList->addChild('Referer', $referer); + } + return $xml->asXML(); + } + + /** + * @return string + */ + function __toString() + { + return $this->serializeToXml(); + } + + /** + * @param boolean $allowEmptyReferer + */ + public function setAllowEmptyReferer($allowEmptyReferer) + { + $this->allowEmptyReferer = $allowEmptyReferer; + } + + /** + * @param string $referer + */ + public function addReferer($referer) + { + $this->refererList[] = $referer; + } + + /** + * @return boolean + */ + public function isAllowEmptyReferer() + { + return $this->allowEmptyReferer; + } + + /** + * @return array + */ + public function getRefererList() + { + return $this->refererList; + } + + private $allowEmptyReferer = true; + private $refererList = array(); +} \ No newline at end of file diff --git a/resources/org/OSS/Model/StorageCapacityConfig.php b/resources/org/OSS/Model/StorageCapacityConfig.php new file mode 100644 index 0000000..05e6332 --- /dev/null +++ b/resources/org/OSS/Model/StorageCapacityConfig.php @@ -0,0 +1,74 @@ +storageCapacity = $storageCapacity; + } + + /** + * Not implemented + */ + public function parseFromXml($strXml) + { + throw new OssException("Not implemented."); + } + + /** + * 把StorageCapacityConfig序列化成xml + * + * @return string + */ + public function serializeToXml() + { + $xml = new \SimpleXMLElement(''); + $xml->addChild('StorageCapacity', strval($this->storageCapacity)); + return $xml->asXML(); + } + + /** + * To string + * + * @return string + */ + function __toString() + { + return $this->serializeToXml(); + } + + /** + * Set storage capacity + * + * @param int $storageCapacity + */ + public function setStorageCapacity($storageCapacity) + { + $this->storageCapacity = $storageCapacity; + } + + /** + * Get storage capacity + * + * @return int + */ + public function getStorageCapacity() + { + return $this->storageCapacity; + } + + private $storageCapacity = 0; +} \ No newline at end of file diff --git a/resources/org/OSS/Model/UploadInfo.php b/resources/org/OSS/Model/UploadInfo.php new file mode 100644 index 0000000..8eaa363 --- /dev/null +++ b/resources/org/OSS/Model/UploadInfo.php @@ -0,0 +1,55 @@ +key = $key; + $this->uploadId = $uploadId; + $this->initiated = $initiated; + } + + /** + * @return string + */ + public function getKey() + { + return $this->key; + } + + /** + * @return string + */ + public function getUploadId() + { + return $this->uploadId; + } + + /** + * @return string + */ + public function getInitiated() + { + return $this->initiated; + } + + private $key = ""; + private $uploadId = ""; + private $initiated = ""; +} \ No newline at end of file diff --git a/resources/org/OSS/Model/WebsiteConfig.php b/resources/org/OSS/Model/WebsiteConfig.php new file mode 100644 index 0000000..8ea08a0 --- /dev/null +++ b/resources/org/OSS/Model/WebsiteConfig.php @@ -0,0 +1,76 @@ +indexDocument = $indexDocument; + $this->errorDocument = $errorDocument; + } + + /** + * @param string $strXml + * @return null + */ + public function parseFromXml($strXml) + { + $xml = simplexml_load_string($strXml); + if (isset($xml->IndexDocument) && isset($xml->IndexDocument->Suffix)) { + $this->indexDocument = strval($xml->IndexDocument->Suffix); + } + if (isset($xml->ErrorDocument) && isset($xml->ErrorDocument->Key)) { + $this->errorDocument = strval($xml->ErrorDocument->Key); + } + } + + /** + * 把WebsiteConfig序列化成xml + * + * @return string + * @throws OssException + */ + public function serializeToXml() + { + $xml = new \SimpleXMLElement(''); + $index_document_part = $xml->addChild('IndexDocument'); + $error_document_part = $xml->addChild('ErrorDocument'); + $index_document_part->addChild('Suffix', $this->indexDocument); + $error_document_part->addChild('Key', $this->errorDocument); + return $xml->asXML(); + } + + /** + * @return string + */ + public function getIndexDocument() + { + return $this->indexDocument; + } + + /** + * @return string + */ + public function getErrorDocument() + { + return $this->errorDocument; + } + + private $indexDocument = ""; + private $errorDocument = ""; +} \ No newline at end of file diff --git a/resources/org/OSS/Model/XmlConfig.php b/resources/org/OSS/Model/XmlConfig.php new file mode 100644 index 0000000..d353a22 --- /dev/null +++ b/resources/org/OSS/Model/XmlConfig.php @@ -0,0 +1,27 @@ +hostname = $this->checkEndpoint($endpoint, $isCName); + $this->accessKeyId = $accessKeyId; + $this->accessKeySecret = $accessKeySecret; + $this->securityToken = $securityToken; + $this->requestProxy = $requestProxy; + + self::checkEnv(); + } + + /** + * 列举用户所有的Bucket[GetService], Endpoint类型为cname不能进行此操作 + * + * @param array $options + * @throws OssException + * @return BucketListInfo + */ + public function listBuckets($options = NULL) + { + if ($this->hostType === self::OSS_HOST_TYPE_CNAME) { + throw new OssException("operation is not permitted with CName host"); + } + $this->precheckOptions($options); + $options[self::OSS_BUCKET] = ''; + $options[self::OSS_METHOD] = self::OSS_HTTP_GET; + $options[self::OSS_OBJECT] = '/'; + $response = $this->auth($options); + $result = new ListBucketsResult($response); + return $result->getData(); + } + + /** + * 创建bucket,默认创建的bucket的ACL是OssClient::OSS_ACL_TYPE_PRIVATE + * + * @param string $bucket + * @param string $acl + * @param array $options + * @param string $storageType + * @return null + */ + public function createBucket($bucket, $acl = self::OSS_ACL_TYPE_PRIVATE, $options = NULL) + { + $this->precheckCommon($bucket, NULL, $options, false); + $options[self::OSS_BUCKET] = $bucket; + $options[self::OSS_METHOD] = self::OSS_HTTP_PUT; + $options[self::OSS_OBJECT] = '/'; + $options[self::OSS_HEADERS] = array(self::OSS_ACL => $acl); + if (isset($options[self::OSS_STORAGE])) { + $this->precheckStorage($options[self::OSS_STORAGE]); + $options[self::OSS_CONTENT] = OssUtil::createBucketXmlBody($options[self::OSS_STORAGE]); + unset($options[self::OSS_STORAGE]); + } + $response = $this->auth($options); + $result = new PutSetDeleteResult($response); + return $result->getData(); + } + + /** + * 删除bucket + * 如果Bucket不为空(Bucket中有Object,或者有分块上传的碎片),则Bucket无法删除, + * 必须删除Bucket中的所有Object以及碎片后,Bucket才能成功删除。 + * + * @param string $bucket + * @param array $options + * @return null + */ + public function deleteBucket($bucket, $options = NULL) + { + $this->precheckCommon($bucket, NULL, $options, false); + $options[self::OSS_BUCKET] = $bucket; + $options[self::OSS_METHOD] = self::OSS_HTTP_DELETE; + $options[self::OSS_OBJECT] = '/'; + $response = $this->auth($options); + $result = new PutSetDeleteResult($response); + return $result->getData(); + } + + /** + * 判断bucket是否存在 + * + * @param string $bucket + * @return bool + * @throws OssException + */ + public function doesBucketExist($bucket) + { + $this->precheckCommon($bucket, NULL, $options, false); + $options[self::OSS_BUCKET] = $bucket; + $options[self::OSS_METHOD] = self::OSS_HTTP_GET; + $options[self::OSS_OBJECT] = '/'; + $options[self::OSS_SUB_RESOURCE] = 'acl'; + $response = $this->auth($options); + $result = new ExistResult($response); + return $result->getData(); + } + + /** + * 获取bucket所属的数据中心位置信息 + * + * @param string $bucket + * @param array $options + * @throws OssException + * @return string + */ + public function getBucketLocation($bucket, $options = NULL) + { + $this->precheckCommon($bucket, NULL, $options, false); + $options[self::OSS_BUCKET] = $bucket; + $options[self::OSS_METHOD] = self::OSS_HTTP_GET; + $options[self::OSS_OBJECT] = '/'; + $options[self::OSS_SUB_RESOURCE] = 'location'; + $response = $this->auth($options); + $result = new GetLocationResult($response); + return $result->getData(); + } + + /** + * 获取Bucket的Meta信息 + * + * @param string $bucket + * @param array $options 具体参考SDK文档 + * @return array + */ + public function getBucketMeta($bucket, $options = NULL) + { + $this->precheckCommon($bucket, NULL, $options, false); + $options[self::OSS_BUCKET] = $bucket; + $options[self::OSS_METHOD] = self::OSS_HTTP_HEAD; + $options[self::OSS_OBJECT] = '/'; + $response = $this->auth($options); + $result = new HeaderResult($response); + return $result->getData(); + } + + /** + * 获取bucket的ACL配置情况 + * + * @param string $bucket + * @param array $options + * @throws OssException + * @return string + */ + public function getBucketAcl($bucket, $options = NULL) + { + $this->precheckCommon($bucket, NULL, $options, false); + $options[self::OSS_BUCKET] = $bucket; + $options[self::OSS_METHOD] = self::OSS_HTTP_GET; + $options[self::OSS_OBJECT] = '/'; + $options[self::OSS_SUB_RESOURCE] = 'acl'; + $response = $this->auth($options); + $result = new AclResult($response); + return $result->getData(); + } + + /** + * 设置bucket的ACL配置情况 + * + * @param string $bucket bucket名称 + * @param string $acl 读写权限,可选值 ['private', 'public-read', 'public-read-write'] + * @param array $options 可以为空 + * @throws OssException + * @return null + */ + public function putBucketAcl($bucket, $acl, $options = NULL) + { + $this->precheckCommon($bucket, NULL, $options, false); + $options[self::OSS_BUCKET] = $bucket; + $options[self::OSS_METHOD] = self::OSS_HTTP_PUT; + $options[self::OSS_OBJECT] = '/'; + $options[self::OSS_HEADERS] = array(self::OSS_ACL => $acl); + $options[self::OSS_SUB_RESOURCE] = 'acl'; + $response = $this->auth($options); + $result = new PutSetDeleteResult($response); + return $result->getData(); + } + + /** + * 获取object的ACL属性 + * + * @param string $bucket + * @param string $object + * @throws OssException + * @return string + */ + public function getObjectAcl($bucket, $object) + { + $options = array(); + $this->precheckCommon($bucket, $object, $options, true); + $options[self::OSS_METHOD] = self::OSS_HTTP_GET; + $options[self::OSS_BUCKET] = $bucket; + $options[self::OSS_OBJECT] = $object; + $options[self::OSS_SUB_RESOURCE] = 'acl'; + $response = $this->auth($options); + $result = new AclResult($response); + return $result->getData(); + } + + /** + * 设置object的ACL属性 + * + * @param string $bucket bucket名称 + * @param string $object object名称 + * @param string $acl 读写权限,可选值 ['default', 'private', 'public-read', 'public-read-write'] + * @throws OssException + * @return null + */ + public function putObjectAcl($bucket, $object, $acl) + { + $this->precheckCommon($bucket, $object, $options, true); + $options[self::OSS_BUCKET] = $bucket; + $options[self::OSS_METHOD] = self::OSS_HTTP_PUT; + $options[self::OSS_OBJECT] = $object; + $options[self::OSS_HEADERS] = array(self::OSS_OBJECT_ACL => $acl); + $options[self::OSS_SUB_RESOURCE] = 'acl'; + $response = $this->auth($options); + $result = new PutSetDeleteResult($response); + return $result->getData(); + } + + /** + * 获取Bucket的访问日志配置情况 + * + * @param string $bucket bucket名称 + * @param array $options 可以为空 + * @throws OssException + * @return LoggingConfig + */ + public function getBucketLogging($bucket, $options = NULL) + { + $this->precheckCommon($bucket, NULL, $options, false); + $options[self::OSS_BUCKET] = $bucket; + $options[self::OSS_METHOD] = self::OSS_HTTP_GET; + $options[self::OSS_OBJECT] = '/'; + $options[self::OSS_SUB_RESOURCE] = 'logging'; + $response = $this->auth($options); + $result = new GetLoggingResult($response); + return $result->getData(); + } + + /** + * 开启Bucket访问日志记录功能,只有Bucket的所有者才能更改 + * + * @param string $bucket bucket名称 + * @param string $targetBucket 日志文件存放的bucket + * @param string $targetPrefix 日志的文件前缀 + * @param array $options 可以为空 + * @throws OssException + * @return null + */ + public function putBucketLogging($bucket, $targetBucket, $targetPrefix, $options = NULL) + { + $this->precheckCommon($bucket, NULL, $options, false); + $this->precheckBucket($targetBucket, 'targetbucket is not allowed empty'); + $options[self::OSS_BUCKET] = $bucket; + $options[self::OSS_METHOD] = self::OSS_HTTP_PUT; + $options[self::OSS_OBJECT] = '/'; + $options[self::OSS_SUB_RESOURCE] = 'logging'; + $options[self::OSS_CONTENT_TYPE] = 'application/xml'; + + $loggingConfig = new LoggingConfig($targetBucket, $targetPrefix); + $options[self::OSS_CONTENT] = $loggingConfig->serializeToXml(); + $response = $this->auth($options); + $result = new PutSetDeleteResult($response); + return $result->getData(); + } + + /** + * 关闭bucket访问日志记录功能 + * + * @param string $bucket bucket名称 + * @param array $options 可以为空 + * @throws OssException + * @return null + */ + public function deleteBucketLogging($bucket, $options = NULL) + { + $this->precheckCommon($bucket, NULL, $options, false); + $options[self::OSS_BUCKET] = $bucket; + $options[self::OSS_METHOD] = self::OSS_HTTP_DELETE; + $options[self::OSS_OBJECT] = '/'; + $options[self::OSS_SUB_RESOURCE] = 'logging'; + $response = $this->auth($options); + $result = new PutSetDeleteResult($response); + return $result->getData(); + } + + /** + * 将bucket设置成静态网站托管模式 + * + * @param string $bucket bucket名称 + * @param WebsiteConfig $websiteConfig + * @param array $options 可以为空 + * @throws OssException + * @return null + */ + public function putBucketWebsite($bucket, $websiteConfig, $options = NULL) + { + $this->precheckCommon($bucket, NULL, $options, false); + $options[self::OSS_BUCKET] = $bucket; + $options[self::OSS_METHOD] = self::OSS_HTTP_PUT; + $options[self::OSS_OBJECT] = '/'; + $options[self::OSS_SUB_RESOURCE] = 'website'; + $options[self::OSS_CONTENT_TYPE] = 'application/xml'; + $options[self::OSS_CONTENT] = $websiteConfig->serializeToXml(); + $response = $this->auth($options); + $result = new PutSetDeleteResult($response); + return $result->getData(); + } + + /** + * 获取bucket的静态网站托管状态 + * + * @param string $bucket bucket名称 + * @param array $options + * @throws OssException + * @return WebsiteConfig + */ + public function getBucketWebsite($bucket, $options = NULL) + { + $this->precheckCommon($bucket, NULL, $options, false); + $options[self::OSS_BUCKET] = $bucket; + $options[self::OSS_METHOD] = self::OSS_HTTP_GET; + $options[self::OSS_OBJECT] = '/'; + $options[self::OSS_SUB_RESOURCE] = 'website'; + $response = $this->auth($options); + $result = new GetWebsiteResult($response); + return $result->getData(); + } + + /** + * 关闭bucket的静态网站托管模式 + * + * @param string $bucket bucket名称 + * @param array $options + * @throws OssException + * @return null + */ + public function deleteBucketWebsite($bucket, $options = NULL) + { + $this->precheckCommon($bucket, NULL, $options, false); + $options[self::OSS_BUCKET] = $bucket; + $options[self::OSS_METHOD] = self::OSS_HTTP_DELETE; + $options[self::OSS_OBJECT] = '/'; + $options[self::OSS_SUB_RESOURCE] = 'website'; + $response = $this->auth($options); + $result = new PutSetDeleteResult($response); + return $result->getData(); + } + + /** + * 在指定的bucket上设定一个跨域资源共享(CORS)的规则,如果原规则存在则覆盖原规则 + * + * @param string $bucket bucket名称 + * @param CorsConfig $corsConfig 跨域资源共享配置,具体规则参见SDK文档 + * @param array $options array + * @throws OssException + * @return null + */ + public function putBucketCors($bucket, $corsConfig, $options = NULL) + { + $this->precheckCommon($bucket, NULL, $options, false); + $options[self::OSS_BUCKET] = $bucket; + $options[self::OSS_METHOD] = self::OSS_HTTP_PUT; + $options[self::OSS_OBJECT] = '/'; + $options[self::OSS_SUB_RESOURCE] = 'cors'; + $options[self::OSS_CONTENT_TYPE] = 'application/xml'; + $options[self::OSS_CONTENT] = $corsConfig->serializeToXml(); + $response = $this->auth($options); + $result = new PutSetDeleteResult($response); + return $result->getData(); + } + + /** + * 获取Bucket的CORS配置情况 + * + * @param string $bucket bucket名称 + * @param array $options 可以为空 + * @throws OssException + * @return CorsConfig + */ + public function getBucketCors($bucket, $options = NULL) + { + $this->precheckCommon($bucket, NULL, $options, false); + $options[self::OSS_BUCKET] = $bucket; + $options[self::OSS_METHOD] = self::OSS_HTTP_GET; + $options[self::OSS_OBJECT] = '/'; + $options[self::OSS_SUB_RESOURCE] = 'cors'; + $response = $this->auth($options); + $result = new GetCorsResult($response, __FUNCTION__); + return $result->getData(); + } + + /** + * 关闭指定Bucket对应的CORS功能并清空所有规则 + * + * @param string $bucket bucket名称 + * @param array $options + * @throws OssException + * @return null + */ + public function deleteBucketCors($bucket, $options = NULL) + { + $this->precheckCommon($bucket, NULL, $options, false); + $options[self::OSS_BUCKET] = $bucket; + $options[self::OSS_METHOD] = self::OSS_HTTP_DELETE; + $options[self::OSS_OBJECT] = '/'; + $options[self::OSS_SUB_RESOURCE] = 'cors'; + $response = $this->auth($options); + $result = new PutSetDeleteResult($response); + return $result->getData(); + } + + /** + * 为指定Bucket增加CNAME绑定 + * + * @param string $bucket bucket名称 + * @param string $cname + * @param array $options + * @throws OssException + * @return null + */ + public function addBucketCname($bucket, $cname, $options = NULL) + { + $this->precheckCommon($bucket, NULL, $options, false); + $options[self::OSS_BUCKET] = $bucket; + $options[self::OSS_METHOD] = self::OSS_HTTP_POST; + $options[self::OSS_OBJECT] = '/'; + $options[self::OSS_SUB_RESOURCE] = 'cname'; + $options[self::OSS_CONTENT_TYPE] = 'application/xml'; + $cnameConfig = new CnameConfig(); + $cnameConfig->addCname($cname); + $options[self::OSS_CONTENT] = $cnameConfig->serializeToXml(); + $options[self::OSS_COMP] = 'add'; + + $response = $this->auth($options); + $result = new PutSetDeleteResult($response); + return $result->getData(); + } + + /** + * 获取指定Bucket已绑定的CNAME列表 + * + * @param string $bucket bucket名称 + * @param array $options + * @throws OssException + * @return CnameConfig + */ + public function getBucketCname($bucket, $options = NULL) + { + $this->precheckCommon($bucket, NULL, $options, false); + $options[self::OSS_BUCKET] = $bucket; + $options[self::OSS_METHOD] = self::OSS_HTTP_GET; + $options[self::OSS_OBJECT] = '/'; + $options[self::OSS_SUB_RESOURCE] = 'cname'; + $response = $this->auth($options); + $result = new GetCnameResult($response); + return $result->getData(); + } + + /** + * 解除指定Bucket的CNAME绑定 + * + * @param string $bucket bucket名称 + * @param CnameConfig $cnameConfig + * @param array $options + * @throws OssException + * @return null + */ + public function deleteBucketCname($bucket, $cname, $options = NULL) + { + $this->precheckCommon($bucket, NULL, $options, false); + $options[self::OSS_BUCKET] = $bucket; + $options[self::OSS_METHOD] = self::OSS_HTTP_POST; + $options[self::OSS_OBJECT] = '/'; + $options[self::OSS_SUB_RESOURCE] = 'cname'; + $options[self::OSS_CONTENT_TYPE] = 'application/xml'; + $cnameConfig = new CnameConfig(); + $cnameConfig->addCname($cname); + $options[self::OSS_CONTENT] = $cnameConfig->serializeToXml(); + $options[self::OSS_COMP] = 'delete'; + + $response = $this->auth($options); + $result = new PutSetDeleteResult($response); + return $result->getData(); + } + + /** + * 为指定Bucket创建LiveChannel + * + * @param string $bucket bucket名称 + * @param string channelName $channelName + * @param LiveChannelConfig $channelConfig + * @param array $options + * @throws OssException + * @return LiveChannelInfo + */ + public function putBucketLiveChannel($bucket, $channelName, $channelConfig, $options = NULL) + { + $this->precheckCommon($bucket, NULL, $options, false); + $options[self::OSS_BUCKET] = $bucket; + $options[self::OSS_METHOD] = self::OSS_HTTP_PUT; + $options[self::OSS_OBJECT] = $channelName; + $options[self::OSS_SUB_RESOURCE] = 'live'; + $options[self::OSS_CONTENT_TYPE] = 'application/xml'; + $options[self::OSS_CONTENT] = $channelConfig->serializeToXml(); + + $response = $this->auth($options); + $result = new PutLiveChannelResult($response); + $info = $result->getData(); + $info->setName($channelName); + $info->setDescription($channelConfig->getDescription()); + + return $info; + } + + /** + * 设置LiveChannel的status + * + * @param string $bucket bucket名称 + * @param string channelName $channelName + * @param string channelStatus $channelStatus 为enabled或disabled + * @param array $options + * @throws OssException + * @return null + */ + public function putLiveChannelStatus($bucket, $channelName, $channelStatus, $options = NULL) + { + $this->precheckCommon($bucket, NULL, $options, false); + $options[self::OSS_BUCKET] = $bucket; + $options[self::OSS_METHOD] = self::OSS_HTTP_PUT; + $options[self::OSS_OBJECT] = $channelName; + $options[self::OSS_SUB_RESOURCE] = 'live'; + $options[self::OSS_LIVE_CHANNEL_STATUS] = $channelStatus; + + $response = $this->auth($options); + $result = new PutSetDeleteResult($response); + return $result->getData(); + } + + /** + * 获取LiveChannel信息 + * + * @param string $bucket bucket名称 + * @param string channelName $channelName + * @param array $options + * @throws OssException + * @return GetLiveChannelInfo + */ + public function getLiveChannelInfo($bucket, $channelName, $options = NULL) + { + $this->precheckCommon($bucket, NULL, $options, false); + $options[self::OSS_BUCKET] = $bucket; + $options[self::OSS_METHOD] = self::OSS_HTTP_GET; + $options[self::OSS_OBJECT] = $channelName; + $options[self::OSS_SUB_RESOURCE] = 'live'; + + $response = $this->auth($options); + $result = new GetLiveChannelInfoResult($response); + return $result->getData(); + } + + /** + * 获取LiveChannel状态信息 + * + * @param string $bucket bucket名称 + * @param string channelName $channelName + * @param array $options + * @throws OssException + * @return GetLiveChannelStatus + */ + public function getLiveChannelStatus($bucket, $channelName, $options = NULL) + { + $this->precheckCommon($bucket, NULL, $options, false); + $options[self::OSS_BUCKET] = $bucket; + $options[self::OSS_METHOD] = self::OSS_HTTP_GET; + $options[self::OSS_OBJECT] = $channelName; + $options[self::OSS_SUB_RESOURCE] = 'live'; + $options[self::OSS_COMP] = 'stat'; + + $response = $this->auth($options); + $result = new GetLiveChannelStatusResult($response); + return $result->getData(); + } + + /** + *获取LiveChannel推流记录 + * + * @param string $bucket bucket名称 + * @param string channelName $channelName + * @param array $options + * @throws OssException + * @return GetLiveChannelHistory + */ + public function getLiveChannelHistory($bucket, $channelName, $options = NULL) + { + $this->precheckCommon($bucket, NULL, $options, false); + $options[self::OSS_BUCKET] = $bucket; + $options[self::OSS_METHOD] = self::OSS_HTTP_GET; + $options[self::OSS_OBJECT] = $channelName; + $options[self::OSS_SUB_RESOURCE] = 'live'; + $options[self::OSS_COMP] = 'history'; + + $response = $this->auth($options); + $result = new GetLiveChannelHistoryResult($response); + return $result->getData(); + } + + /** + *获取指定Bucket下的live channel列表 + * + * @param string $bucket bucket名称 + * @param array $options + * @throws OssException + * @return LiveChannelListInfo + */ + public function listBucketLiveChannels($bucket, $options = NULL) + { + $this->precheckCommon($bucket, NULL, $options, false); + $options[self::OSS_BUCKET] = $bucket; + $options[self::OSS_METHOD] = self::OSS_HTTP_GET; + $options[self::OSS_OBJECT] = '/'; + $options[self::OSS_SUB_RESOURCE] = 'live'; + $options[self::OSS_QUERY_STRING] = array( + 'prefix' => isset($options['prefix']) ? $options['prefix'] : '', + 'marker' => isset($options['marker']) ? $options['marker'] : '', + 'max-keys' => isset($options['max-keys']) ? $options['max-keys'] : '', + ); + $response = $this->auth($options); + $result = new ListLiveChannelResult($response); + $list = $result->getData(); + $list->setBucketName($bucket); + + return $list; + } + + /** + * 为指定LiveChannel生成播放列表 + * + * @param string $bucket bucket名称 + * @param string channelName $channelName + * @param string $playlistName 指定生成的点播播放列表的名称,必须以“.m3u8”结尾 + * @param array $setTime startTime和EndTime以unix时间戳格式给定,跨度不能超过一天 + * @throws OssException + * @return null + */ + public function postVodPlaylist($bucket, $channelName, $playlistName, $setTime) + { + $this->precheckCommon($bucket, NULL, $options, false); + $options[self::OSS_BUCKET] = $bucket; + $options[self::OSS_METHOD] = self::OSS_HTTP_POST; + $options[self::OSS_OBJECT] = $channelName . '/' . $playlistName; + $options[self::OSS_SUB_RESOURCE] = 'vod'; + $options[self::OSS_LIVE_CHANNEL_END_TIME] = $setTime['EndTime']; + $options[self::OSS_LIVE_CHANNEL_START_TIME] = $setTime['StartTime']; + + $response = $this->auth($options); + $result = new PutSetDeleteResult($response); + return $result->getData(); + } + + /** + * 删除指定Bucket的LiveChannel + * + * @param string $bucket bucket名称 + * @param string channelName $channelName + * @param array $options + * @throws OssException + * @return null + */ + public function deleteBucketLiveChannel($bucket, $channelName, $options = NULL) + { + $this->precheckCommon($bucket, NULL, $options, false); + $options[self::OSS_BUCKET] = $bucket; + $options[self::OSS_METHOD] = self::OSS_HTTP_DELETE; + $options[self::OSS_OBJECT] = $channelName; + $options[self::OSS_SUB_RESOURCE] = 'live'; + + $response = $this->auth($options); + $result = new PutSetDeleteResult($response); + return $result->getData(); + } + + /** + * 生成带签名的推流地址 + * + * @param string $bucket bucket名称 + * @param string channelName $channelName + * @param int timeout 设置超时时间,单位为秒 + * @param array $options + * @throws OssException + * @return 推流地址 + */ + public function signRtmpUrl($bucket, $channelName, $timeout = 60, $options = NULL) + { + $this->precheckCommon($bucket, $channelName, $options, false); + $expires = time() + $timeout; + $proto = 'rtmp://'; + $hostname = $this->generateHostname($bucket); + $cano_params = ''; + $query_items = array(); + $params = isset($options['params']) ? $options['params'] : array(); + uksort($params, 'strnatcasecmp'); + foreach ($params as $key => $value) { + $cano_params = $cano_params . $key . ':' . $value . "\n"; + $query_items[] = rawurlencode($key) . '=' . rawurlencode($value); + } + $resource = '/' . $bucket . '/' . $channelName; + + $string_to_sign = $expires . "\n" . $cano_params . $resource; + $signature = base64_encode(hash_hmac('sha1', $string_to_sign, $this->accessKeySecret, true)); + + $query_items[] = 'OSSAccessKeyId=' . rawurlencode($this->accessKeyId); + $query_items[] = 'Expires=' . rawurlencode($expires); + $query_items[] = 'Signature=' . rawurlencode($signature); + + return $proto . $hostname . '/live/' . $channelName . '?' . implode('&', $query_items); + } + + /** + * 检验跨域资源请求, 发送跨域请求之前会发送一个preflight请求(OPTIONS)并带上特定的来源域, + * HTTP方法和header信息等给OSS以决定是否发送真正的请求。 OSS可以通过putBucketCors接口 + * 来开启Bucket的CORS支持,开启CORS功能之后,OSS在收到浏览器preflight请求时会根据设定的 + * 规则评估是否允许本次请求 + * + * @param string $bucket bucket名称 + * @param string $object object名称 + * @param string $origin 请求来源域 + * @param string $request_method 表明实际请求中会使用的HTTP方法 + * @param string $request_headers 表明实际请求中会使用的除了简单头部之外的headers + * @param array $options + * @return array + * @throws OssException + * @link http://help.aliyun.com/document_detail/oss/api-reference/cors/OptionObject.html + */ + public function optionsObject($bucket, $object, $origin, $request_method, $request_headers, $options = NULL) + { + $this->precheckCommon($bucket, NULL, $options, false); + $options[self::OSS_BUCKET] = $bucket; + $options[self::OSS_METHOD] = self::OSS_HTTP_OPTIONS; + $options[self::OSS_OBJECT] = $object; + $options[self::OSS_HEADERS] = array( + self::OSS_OPTIONS_ORIGIN => $origin, + self::OSS_OPTIONS_REQUEST_HEADERS => $request_headers, + self::OSS_OPTIONS_REQUEST_METHOD => $request_method + ); + $response = $this->auth($options); + $result = new HeaderResult($response); + return $result->getData(); + } + + /** + * 设置Bucket的Lifecycle配置 + * + * @param string $bucket bucket名称 + * @param LifecycleConfig $lifecycleConfig Lifecycle配置类 + * @param array $options + * @throws OssException + * @return null + */ + public function putBucketLifecycle($bucket, $lifecycleConfig, $options = NULL) + { + $this->precheckCommon($bucket, NULL, $options, false); + $options[self::OSS_BUCKET] = $bucket; + $options[self::OSS_METHOD] = self::OSS_HTTP_PUT; + $options[self::OSS_OBJECT] = '/'; + $options[self::OSS_SUB_RESOURCE] = 'lifecycle'; + $options[self::OSS_CONTENT_TYPE] = 'application/xml'; + $options[self::OSS_CONTENT] = $lifecycleConfig->serializeToXml(); + $response = $this->auth($options); + $result = new PutSetDeleteResult($response); + return $result->getData(); + } + + /** + * 获取Bucket的Lifecycle配置情况 + * + * @param string $bucket bucket名称 + * @param array $options + * @throws OssException + * @return LifecycleConfig + */ + public function getBucketLifecycle($bucket, $options = NULL) + { + $this->precheckCommon($bucket, NULL, $options, false); + $options[self::OSS_BUCKET] = $bucket; + $options[self::OSS_METHOD] = self::OSS_HTTP_GET; + $options[self::OSS_OBJECT] = '/'; + $options[self::OSS_SUB_RESOURCE] = 'lifecycle'; + $response = $this->auth($options); + $result = new GetLifecycleResult($response); + return $result->getData(); + } + + /** + * 删除指定Bucket的生命周期配置 + * + * @param string $bucket bucket名称 + * @param array $options + * @throws OssException + * @return null + */ + public function deleteBucketLifecycle($bucket, $options = NULL) + { + $this->precheckCommon($bucket, NULL, $options, false); + $options[self::OSS_BUCKET] = $bucket; + $options[self::OSS_METHOD] = self::OSS_HTTP_DELETE; + $options[self::OSS_OBJECT] = '/'; + $options[self::OSS_SUB_RESOURCE] = 'lifecycle'; + $response = $this->auth($options); + $result = new PutSetDeleteResult($response); + return $result->getData(); + } + + /** + * 设置一个bucket的referer访问白名单和是否允许referer字段为空的请求访问 + * Bucket Referer防盗链具体见OSS防盗链 + * + * @param string $bucket bucket名称 + * @param RefererConfig $refererConfig + * @param array $options + * @return ResponseCore + * @throws null + */ + public function putBucketReferer($bucket, $refererConfig, $options = NULL) + { + $this->precheckCommon($bucket, NULL, $options, false); + $options[self::OSS_BUCKET] = $bucket; + $options[self::OSS_METHOD] = self::OSS_HTTP_PUT; + $options[self::OSS_OBJECT] = '/'; + $options[self::OSS_SUB_RESOURCE] = 'referer'; + $options[self::OSS_CONTENT_TYPE] = 'application/xml'; + $options[self::OSS_CONTENT] = $refererConfig->serializeToXml(); + $response = $this->auth($options); + $result = new PutSetDeleteResult($response); + return $result->getData(); + } + + /** + * 获取Bucket的Referer配置情况 + * Bucket Referer防盗链具体见OSS防盗链 + * + * @param string $bucket bucket名称 + * @param array $options + * @throws OssException + * @return RefererConfig + */ + public function getBucketReferer($bucket, $options = NULL) + { + $this->precheckCommon($bucket, NULL, $options, false); + $options[self::OSS_BUCKET] = $bucket; + $options[self::OSS_METHOD] = self::OSS_HTTP_GET; + $options[self::OSS_OBJECT] = '/'; + $options[self::OSS_SUB_RESOURCE] = 'referer'; + $response = $this->auth($options); + $result = new GetRefererResult($response); + return $result->getData(); + } + + /** + * 设置bucket的容量大小,单位GB + * 当bucket的容量大于设置的容量时,禁止继续写入 + * + * @param string $bucket bucket名称 + * @param int $storageCapacity + * @param array $options + * @return ResponseCore + * @throws null + */ + public function putBucketStorageCapacity($bucket, $storageCapacity, $options = NULL) + { + $this->precheckCommon($bucket, NULL, $options, false); + $options[self::OSS_BUCKET] = $bucket; + $options[self::OSS_METHOD] = self::OSS_HTTP_PUT; + $options[self::OSS_OBJECT] = '/'; + $options[self::OSS_SUB_RESOURCE] = 'qos'; + $options[self::OSS_CONTENT_TYPE] = 'application/xml'; + $storageCapacityConfig = new StorageCapacityConfig($storageCapacity); + $options[self::OSS_CONTENT] = $storageCapacityConfig->serializeToXml(); + $response = $this->auth($options); + $result = new PutSetDeleteResult($response); + return $result->getData(); + } + + /** + * 获取bucket的容量大小,单位GB + * + * @param string $bucket bucket名称 + * @param array $options + * @throws OssException + * @return int + */ + public function getBucketStorageCapacity($bucket, $options = NULL) + { + $this->precheckCommon($bucket, NULL, $options, false); + $options[self::OSS_BUCKET] = $bucket; + $options[self::OSS_METHOD] = self::OSS_HTTP_GET; + $options[self::OSS_OBJECT] = '/'; + $options[self::OSS_SUB_RESOURCE] = 'qos'; + $response = $this->auth($options); + $result = new GetStorageCapacityResult($response); + return $result->getData(); + } + + /** + * 获取bucket下的object列表 + * + * @param string $bucket + * @param array $options + * 其中options中的参数如下 + * $options = array( + * 'max-keys' => max-keys用于限定此次返回object的最大数,如果不设定,默认为100,max-keys取值不能大于1000。 + * 'prefix' => 限定返回的object key必须以prefix作为前缀。注意使用prefix查询时,返回的key中仍会包含prefix。 + * 'delimiter' => 是一个用于对Object名字进行分组的字符。所有名字包含指定的前缀且第一次出现delimiter字符之间的object作为一组元素 + * 'marker' => 用户设定结果从marker之后按字母排序的第一个开始返回。 + *) + * 其中 prefix,marker用来实现分页显示效果,参数的长度必须小于256字节。 + * @throws OssException + * @return ObjectListInfo + */ + public function listObjects($bucket, $options = NULL) + { + $this->precheckCommon($bucket, NULL, $options, false); + $options[self::OSS_BUCKET] = $bucket; + $options[self::OSS_METHOD] = self::OSS_HTTP_GET; + $options[self::OSS_OBJECT] = '/'; + $options[self::OSS_HEADERS] = array( + self::OSS_DELIMITER => isset($options[self::OSS_DELIMITER]) ? $options[self::OSS_DELIMITER] : '/', + self::OSS_PREFIX => isset($options[self::OSS_PREFIX]) ? $options[self::OSS_PREFIX] : '', + self::OSS_MAX_KEYS => isset($options[self::OSS_MAX_KEYS]) ? $options[self::OSS_MAX_KEYS] : self::OSS_MAX_KEYS_VALUE, + self::OSS_MARKER => isset($options[self::OSS_MARKER]) ? $options[self::OSS_MARKER] : '', + ); + $query = isset($options[self::OSS_QUERY_STRING]) ? $options[self::OSS_QUERY_STRING] : array(); + $options[self::OSS_QUERY_STRING] = array_merge( + $query, + array(self::OSS_ENCODING_TYPE => self::OSS_ENCODING_TYPE_URL) + ); + + $response = $this->auth($options); + $result = new ListObjectsResult($response); + return $result->getData(); + } + + /** + * 创建虚拟目录 (本函数会在object名称后增加'/', 所以创建目录的object名称不需要'/'结尾,否则,目录名称会变成'//') + * + * 暂不开放此接口 + * + * @param string $bucket bucket名称 + * @param string $object object名称 + * @param array $options + * @return null + */ + public function createObjectDir($bucket, $object, $options = NULL) + { + $this->precheckCommon($bucket, $object, $options); + $options[self::OSS_BUCKET] = $bucket; + $options[self::OSS_METHOD] = self::OSS_HTTP_PUT; + $options[self::OSS_OBJECT] = $object . '/'; + $options[self::OSS_CONTENT_LENGTH] = array(self::OSS_CONTENT_LENGTH => 0); + $response = $this->auth($options); + $result = new PutSetDeleteResult($response); + return $result->getData(); + } + + /** + * 上传内存中的内容 + * + * @param string $bucket bucket名称 + * @param string $object objcet名称 + * @param string $content 上传的内容 + * @param array $options + * @return null + */ + public function putObject($bucket, $object, $content, $options = NULL) + { + $this->precheckCommon($bucket, $object, $options); + + $options[self::OSS_CONTENT] = $content; + $options[self::OSS_BUCKET] = $bucket; + $options[self::OSS_METHOD] = self::OSS_HTTP_PUT; + $options[self::OSS_OBJECT] = $object; + + if (!isset($options[self::OSS_LENGTH])) { + $options[self::OSS_CONTENT_LENGTH] = strlen($options[self::OSS_CONTENT]); + } else { + $options[self::OSS_CONTENT_LENGTH] = $options[self::OSS_LENGTH]; + } + + $is_check_md5 = $this->isCheckMD5($options); + if ($is_check_md5) { + $content_md5 = base64_encode(md5($content, true)); + $options[self::OSS_CONTENT_MD5] = $content_md5; + } + + if (!isset($options[self::OSS_CONTENT_TYPE])) { + $options[self::OSS_CONTENT_TYPE] = $this->getMimeType($object); + } + $response = $this->auth($options); + + if (isset($options[self::OSS_CALLBACK]) && !empty($options[self::OSS_CALLBACK])) { + $result = new CallbackResult($response); + } else { + $result = new PutSetDeleteResult($response); + } + + return $result->getData(); + } + + /** + * 创建symlink + * @param string $bucket bucket名称 + * @param string $symlink symlink名称 + * @param string $targetObject 目标object名称 + * @param array $options + * @return null + */ + public function putSymlink($bucket, $symlink ,$targetObject, $options = NULL) + { + $this->precheckCommon($bucket, $symlink, $options); + + $options[self::OSS_BUCKET] = $bucket; + $options[self::OSS_METHOD] = self::OSS_HTTP_PUT; + $options[self::OSS_OBJECT] = $symlink; + $options[self::OSS_SUB_RESOURCE] = self::OSS_SYMLINK; + $options[self::OSS_HEADERS][self::OSS_SYMLINK_TARGET] = rawurlencode($targetObject); + + $response = $this->auth($options); + $result = new PutSetDeleteResult($response); + return $result->getData(); + } + + /** + * 获取symlink + *@param string $bucket bucket名称 + * @param string $symlink symlink名称 + * @return null + */ + public function getSymlink($bucket, $symlink) + { + $this->precheckCommon($bucket, $symlink, $options); + + $options[self::OSS_BUCKET] = $bucket; + $options[self::OSS_METHOD] = self::OSS_HTTP_GET; + $options[self::OSS_OBJECT] = $symlink; + $options[self::OSS_SUB_RESOURCE] = self::OSS_SYMLINK; + + $response = $this->auth($options); + $result = new SymlinkResult($response); + return $result->getData(); + } + + /** + * 上传本地文件 + * + * @param string $bucket bucket名称 + * @param string $object object名称 + * @param string $file 本地文件路径 + * @param array $options + * @return null + * @throws OssException + */ + public function uploadFile($bucket, $object, $file, $options = NULL) + { + $this->precheckCommon($bucket, $object, $options); + OssUtil::throwOssExceptionWithMessageIfEmpty($file, "file path is invalid"); + $file = OssUtil::encodePath($file); + if (!file_exists($file)) { + throw new OssException($file . " file does not exist"); + } + $options[self::OSS_FILE_UPLOAD] = $file; + $file_size = filesize($options[self::OSS_FILE_UPLOAD]); + $is_check_md5 = $this->isCheckMD5($options); + if ($is_check_md5) { + $content_md5 = base64_encode(md5_file($options[self::OSS_FILE_UPLOAD], true)); + $options[self::OSS_CONTENT_MD5] = $content_md5; + } + if (!isset($options[self::OSS_CONTENT_TYPE])) { + $options[self::OSS_CONTENT_TYPE] = $this->getMimeType($object, $file); + } + $options[self::OSS_METHOD] = self::OSS_HTTP_PUT; + $options[self::OSS_BUCKET] = $bucket; + $options[self::OSS_OBJECT] = $object; + $options[self::OSS_CONTENT_LENGTH] = $file_size; + $response = $this->auth($options); + $result = new PutSetDeleteResult($response); + return $result->getData(); + } + + /** + * 追加上传内存中的内容 + * + * @param string $bucket bucket名称 + * @param string $object objcet名称 + * @param string $content 本次追加上传的内容 + * @param array $options + * @return int next append position + * @throws OssException + */ + public function appendObject($bucket, $object, $content, $position, $options = NULL) + { + $this->precheckCommon($bucket, $object, $options); + + $options[self::OSS_CONTENT] = $content; + $options[self::OSS_BUCKET] = $bucket; + $options[self::OSS_METHOD] = self::OSS_HTTP_POST; + $options[self::OSS_OBJECT] = $object; + $options[self::OSS_SUB_RESOURCE] = 'append'; + $options[self::OSS_POSITION] = strval($position); + + if (!isset($options[self::OSS_LENGTH])) { + $options[self::OSS_CONTENT_LENGTH] = strlen($options[self::OSS_CONTENT]); + } else { + $options[self::OSS_CONTENT_LENGTH] = $options[self::OSS_LENGTH]; + } + + $is_check_md5 = $this->isCheckMD5($options); + if ($is_check_md5) { + $content_md5 = base64_encode(md5($content, true)); + $options[self::OSS_CONTENT_MD5] = $content_md5; + } + + if (!isset($options[self::OSS_CONTENT_TYPE])) { + $options[self::OSS_CONTENT_TYPE] = $this->getMimeType($object); + } + $response = $this->auth($options); + $result = new AppendResult($response); + return $result->getData(); + } + + /** + * 追加上传本地文件 + * + * @param string $bucket bucket名称 + * @param string $object object名称 + * @param string $file 追加上传的本地文件路径 + * @param array $options + * @return int next append position + * @throws OssException + */ + public function appendFile($bucket, $object, $file, $position, $options = NULL) + { + $this->precheckCommon($bucket, $object, $options); + + OssUtil::throwOssExceptionWithMessageIfEmpty($file, "file path is invalid"); + $file = OssUtil::encodePath($file); + if (!file_exists($file)) { + throw new OssException($file . " file does not exist"); + } + $options[self::OSS_FILE_UPLOAD] = $file; + $file_size = filesize($options[self::OSS_FILE_UPLOAD]); + $is_check_md5 = $this->isCheckMD5($options); + if ($is_check_md5) { + $content_md5 = base64_encode(md5_file($options[self::OSS_FILE_UPLOAD], true)); + $options[self::OSS_CONTENT_MD5] = $content_md5; + } + if (!isset($options[self::OSS_CONTENT_TYPE])) { + $options[self::OSS_CONTENT_TYPE] = $this->getMimeType($object, $file); + } + + $options[self::OSS_METHOD] = self::OSS_HTTP_POST; + $options[self::OSS_BUCKET] = $bucket; + $options[self::OSS_OBJECT] = $object; + $options[self::OSS_CONTENT_LENGTH] = $file_size; + $options[self::OSS_SUB_RESOURCE] = 'append'; + $options[self::OSS_POSITION] = strval($position); + + $response = $this->auth($options); + $result = new AppendResult($response); + return $result->getData(); + } + + /** + * 拷贝一个在OSS上已经存在的object成另外一个object + * + * @param string $fromBucket 源bucket名称 + * @param string $fromObject 源object名称 + * @param string $toBucket 目标bucket名称 + * @param string $toObject 目标object名称 + * @param array $options + * @return null + * @throws OssException + */ + public function copyObject($fromBucket, $fromObject, $toBucket, $toObject, $options = NULL) + { + $this->precheckCommon($fromBucket, $fromObject, $options); + $this->precheckCommon($toBucket, $toObject, $options); + $options[self::OSS_BUCKET] = $toBucket; + $options[self::OSS_METHOD] = self::OSS_HTTP_PUT; + $options[self::OSS_OBJECT] = $toObject; + if (isset($options[self::OSS_HEADERS])) { + $options[self::OSS_HEADERS][self::OSS_OBJECT_COPY_SOURCE] = '/' . $fromBucket . '/' . $fromObject; + } else { + $options[self::OSS_HEADERS] = array(self::OSS_OBJECT_COPY_SOURCE => '/' . $fromBucket . '/' . $fromObject); + } + $response = $this->auth($options); + $result = new CopyObjectResult($response); + return $result->getData(); + } + + /** + * 获取Object的Meta信息 + * + * @param string $bucket bucket名称 + * @param string $object object名称 + * @param string $options 具体参考SDK文档 + * @return array + */ + public function getObjectMeta($bucket, $object, $options = NULL) + { + $this->precheckCommon($bucket, $object, $options); + $options[self::OSS_BUCKET] = $bucket; + $options[self::OSS_METHOD] = self::OSS_HTTP_HEAD; + $options[self::OSS_OBJECT] = $object; + $response = $this->auth($options); + $result = new HeaderResult($response); + return $result->getData(); + } + + /** + * 删除某个Object + * + * @param string $bucket bucket名称 + * @param string $object object名称 + * @param array $options + * @return null + */ + public function deleteObject($bucket, $object, $options = NULL) + { + $this->precheckCommon($bucket, $object, $options); + $options[self::OSS_BUCKET] = $bucket; + $options[self::OSS_METHOD] = self::OSS_HTTP_DELETE; + $options[self::OSS_OBJECT] = $object; + $response = $this->auth($options); + $result = new PutSetDeleteResult($response); + return $result->getData(); + } + + /** + * 删除同一个Bucket中的多个Object + * + * @param string $bucket bucket名称 + * @param array $objects object列表 + * @param array $options + * @return ResponseCore + * @throws null + */ + public function deleteObjects($bucket, $objects, $options = null) + { + $this->precheckCommon($bucket, NULL, $options, false); + if (!is_array($objects) || !$objects) { + throw new OssException('objects must be array'); + } + $options[self::OSS_METHOD] = self::OSS_HTTP_POST; + $options[self::OSS_BUCKET] = $bucket; + $options[self::OSS_OBJECT] = '/'; + $options[self::OSS_SUB_RESOURCE] = 'delete'; + $options[self::OSS_CONTENT_TYPE] = 'application/xml'; + $quiet = 'false'; + if (isset($options['quiet'])) { + if (is_bool($options['quiet'])) { //Boolean + $quiet = $options['quiet'] ? 'true' : 'false'; + } elseif (is_string($options['quiet'])) { // string + $quiet = ($options['quiet'] === 'true') ? 'true' : 'false'; + } + } + $xmlBody = OssUtil::createDeleteObjectsXmlBody($objects, $quiet); + $options[self::OSS_CONTENT] = $xmlBody; + $response = $this->auth($options); + $result = new DeleteObjectsResult($response); + return $result->getData(); + } + + /** + * 获得Object内容 + * + * @param string $bucket bucket名称 + * @param string $object object名称 + * @param array $options 该参数中必须设置ALIOSS::OSS_FILE_DOWNLOAD,ALIOSS::OSS_RANGE可选,可以根据实际情况设置;如果不设置,默认会下载全部内容 + * @return string + */ + public function getObject($bucket, $object, $options = NULL) + { + $this->precheckCommon($bucket, $object, $options); + $options[self::OSS_BUCKET] = $bucket; + $options[self::OSS_METHOD] = self::OSS_HTTP_GET; + $options[self::OSS_OBJECT] = $object; + if (isset($options[self::OSS_LAST_MODIFIED])) { + $options[self::OSS_HEADERS][self::OSS_IF_MODIFIED_SINCE] = $options[self::OSS_LAST_MODIFIED]; + unset($options[self::OSS_LAST_MODIFIED]); + } + if (isset($options[self::OSS_ETAG])) { + $options[self::OSS_HEADERS][self::OSS_IF_NONE_MATCH] = $options[self::OSS_ETAG]; + unset($options[self::OSS_ETAG]); + } + if (isset($options[self::OSS_RANGE])) { + $range = $options[self::OSS_RANGE]; + $options[self::OSS_HEADERS][self::OSS_RANGE] = "bytes=$range"; + unset($options[self::OSS_RANGE]); + } + $response = $this->auth($options); + $result = new BodyResult($response); + return $result->getData(); + } + + /** + * 检测Object是否存在 + * 通过获取Object的Meta信息来判断Object是否存在, 用户需要自行解析ResponseCore判断object是否存在 + * + * @param string $bucket bucket名称 + * @param string $object object名称 + * @param array $options + * @return bool + */ + public function doesObjectExist($bucket, $object, $options = NULL) + { + $this->precheckCommon($bucket, $object, $options); + $options[self::OSS_BUCKET] = $bucket; + $options[self::OSS_METHOD] = self::OSS_HTTP_HEAD; + $options[self::OSS_OBJECT] = $object; + $response = $this->auth($options); + $result = new ExistResult($response); + return $result->getData(); + } + + /** + * 针对Archive类型的Object读取 + * 需要使用Restore操作让服务端执行解冻任务 + * + * @param string $bucket bucket名称 + * @param string $object object名称 + * @return null + * @throws OssException + */ + public function restoreObject($bucket, $object, $options = NULL) + { + $this->precheckCommon($bucket, $object, $options); + $options[self::OSS_BUCKET] = $bucket; + $options[self::OSS_METHOD] = self::OSS_HTTP_POST; + $options[self::OSS_OBJECT] = $object; + $options[self::OSS_SUB_RESOURCE] = self::OSS_RESTORE; + $response = $this->auth($options); + $result = new PutSetDeleteResult($response); + return $result->getData(); + } + + /** + * 获取分片大小,根据用户提供的part_size,重新计算一个更合理的partsize + * + * @param int $partSize + * @return int + */ + private function computePartSize($partSize) + { + $partSize = (integer)$partSize; + if ($partSize <= self::OSS_MIN_PART_SIZE) { + $partSize = self::OSS_MIN_PART_SIZE; + } elseif ($partSize > self::OSS_MAX_PART_SIZE) { + $partSize = self::OSS_MAX_PART_SIZE; + } + return $partSize; + } + + /** + * 计算文件可以分成多少个part,以及每个part的长度以及起始位置 + * 方法必须在 中调用 + * + * @param integer $file_size 文件大小 + * @param integer $partSize part大小,默认5M + * @return array An array 包含 key-value 键值对. Key 为 `seekTo` 和 `length`. + */ + public function generateMultiuploadParts($file_size, $partSize = 5242880) + { + $i = 0; + $size_count = $file_size; + $values = array(); + $partSize = $this->computePartSize($partSize); + while ($size_count > 0) { + $size_count -= $partSize; + $values[] = array( + self::OSS_SEEK_TO => ($partSize * $i), + self::OSS_LENGTH => (($size_count > 0) ? $partSize : ($size_count + $partSize)), + ); + $i++; + } + return $values; + } + + /** + * 初始化multi-part upload + * + * @param string $bucket Bucket名称 + * @param string $object Object名称 + * @param array $options Key-Value数组 + * @throws OssException + * @return string 返回uploadid + */ + public function initiateMultipartUpload($bucket, $object, $options = NULL) + { + $this->precheckCommon($bucket, $object, $options); + $options[self::OSS_METHOD] = self::OSS_HTTP_POST; + $options[self::OSS_BUCKET] = $bucket; + $options[self::OSS_OBJECT] = $object; + $options[self::OSS_SUB_RESOURCE] = 'uploads'; + $options[self::OSS_CONTENT] = ''; + + if (!isset($options[self::OSS_CONTENT_TYPE])) { + $options[self::OSS_CONTENT_TYPE] = $this->getMimeType($object); + } + if (!isset($options[self::OSS_HEADERS])) { + $options[self::OSS_HEADERS] = array(); + } + $response = $this->auth($options); + $result = new InitiateMultipartUploadResult($response); + return $result->getData(); + } + + /** + * 分片上传的块上传接口 + * + * @param string $bucket Bucket名称 + * @param string $object Object名称 + * @param string $uploadId + * @param array $options Key-Value数组 + * @return string eTag + * @throws OssException + */ + public function uploadPart($bucket, $object, $uploadId, $options = null) + { + $this->precheckCommon($bucket, $object, $options); + $this->precheckParam($options, self::OSS_FILE_UPLOAD, __FUNCTION__); + $this->precheckParam($options, self::OSS_PART_NUM, __FUNCTION__); + + $options[self::OSS_METHOD] = self::OSS_HTTP_PUT; + $options[self::OSS_BUCKET] = $bucket; + $options[self::OSS_OBJECT] = $object; + $options[self::OSS_UPLOAD_ID] = $uploadId; + + if (isset($options[self::OSS_LENGTH])) { + $options[self::OSS_CONTENT_LENGTH] = $options[self::OSS_LENGTH]; + } + $response = $this->auth($options); + $result = new UploadPartResult($response); + return $result->getData(); + } + + /** + * 获取已成功上传的part + * + * @param string $bucket Bucket名称 + * @param string $object Object名称 + * @param string $uploadId uploadId + * @param array $options Key-Value数组 + * @return ListPartsInfo + * @throws OssException + */ + public function listParts($bucket, $object, $uploadId, $options = null) + { + $this->precheckCommon($bucket, $object, $options); + $options[self::OSS_METHOD] = self::OSS_HTTP_GET; + $options[self::OSS_BUCKET] = $bucket; + $options[self::OSS_OBJECT] = $object; + $options[self::OSS_UPLOAD_ID] = $uploadId; + $options[self::OSS_QUERY_STRING] = array(); + foreach (array('max-parts', 'part-number-marker') as $param) { + if (isset($options[$param])) { + $options[self::OSS_QUERY_STRING][$param] = $options[$param]; + unset($options[$param]); + } + } + $response = $this->auth($options); + $result = new ListPartsResult($response); + return $result->getData(); + } + + /** + * 中止进行一半的分片上传操作 + * + * @param string $bucket Bucket名称 + * @param string $object Object名称 + * @param string $uploadId uploadId + * @param array $options Key-Value数组 + * @return null + * @throws OssException + */ + public function abortMultipartUpload($bucket, $object, $uploadId, $options = NULL) + { + $this->precheckCommon($bucket, $object, $options); + $options[self::OSS_METHOD] = self::OSS_HTTP_DELETE; + $options[self::OSS_BUCKET] = $bucket; + $options[self::OSS_OBJECT] = $object; + $options[self::OSS_UPLOAD_ID] = $uploadId; + $response = $this->auth($options); + $result = new PutSetDeleteResult($response); + return $result->getData(); + } + + /** + * 在将所有数据Part都上传完成后,调用此接口完成本次分块上传 + * + * @param string $bucket Bucket名称 + * @param string $object Object名称 + * @param string $uploadId uploadId + * @param array $listParts array( array("PartNumber"=> int, "ETag"=>string)) + * @param array $options Key-Value数组 + * @throws OssException + * @return null + */ + public function completeMultipartUpload($bucket, $object, $uploadId, $listParts, $options = NULL) + { + $this->precheckCommon($bucket, $object, $options); + $options[self::OSS_METHOD] = self::OSS_HTTP_POST; + $options[self::OSS_BUCKET] = $bucket; + $options[self::OSS_OBJECT] = $object; + $options[self::OSS_UPLOAD_ID] = $uploadId; + $options[self::OSS_CONTENT_TYPE] = 'application/xml'; + if (!is_array($listParts)) { + throw new OssException("listParts must be array type"); + } + $options[self::OSS_CONTENT] = OssUtil::createCompleteMultipartUploadXmlBody($listParts); + $response = $this->auth($options); + if (isset($options[self::OSS_CALLBACK]) && !empty($options[self::OSS_CALLBACK])) { + $result = new CallbackResult($response); + } else { + $result = new PutSetDeleteResult($response); + } + return $result->getData(); + } + + /** + * 罗列出所有执行中的Multipart Upload事件,即已经被初始化的Multipart Upload但是未被 + * Complete或者Abort的Multipart Upload事件 + * + * @param string $bucket bucket + * @param array $options 关联数组 + * @throws OssException + * @return ListMultipartUploadInfo + */ + public function listMultipartUploads($bucket, $options = null) + { + $this->precheckCommon($bucket, NULL, $options, false); + $options[self::OSS_METHOD] = self::OSS_HTTP_GET; + $options[self::OSS_BUCKET] = $bucket; + $options[self::OSS_OBJECT] = '/'; + $options[self::OSS_SUB_RESOURCE] = 'uploads'; + + foreach (array('delimiter', 'key-marker', 'max-uploads', 'prefix', 'upload-id-marker') as $param) { + if (isset($options[$param])) { + $options[self::OSS_QUERY_STRING][$param] = $options[$param]; + unset($options[$param]); + } + } + $query = isset($options[self::OSS_QUERY_STRING]) ? $options[self::OSS_QUERY_STRING] : array(); + $options[self::OSS_QUERY_STRING] = array_merge( + $query, + array(self::OSS_ENCODING_TYPE => self::OSS_ENCODING_TYPE_URL) + ); + + $response = $this->auth($options); + $result = new ListMultipartUploadResult($response); + return $result->getData(); + } + + /** + * 从一个已存在的Object中拷贝数据来上传一个Part + * + * @param string $fromBucket 源bucket名称 + * @param string $fromObject 源object名称 + * @param string $toBucket 目标bucket名称 + * @param string $toObject 目标object名称 + * @param int $partNumber 分块上传的块id + * @param string $uploadId 初始化multipart upload返回的uploadid + * @param array $options Key-Value数组 + * @return null + * @throws OssException + */ + public function uploadPartCopy($fromBucket, $fromObject, $toBucket, $toObject, $partNumber, $uploadId, $options = NULL) + { + $this->precheckCommon($fromBucket, $fromObject, $options); + $this->precheckCommon($toBucket, $toObject, $options); + + //如果没有设置$options['isFullCopy'],则需要强制判断copy的起止位置 + $start_range = "0"; + if (isset($options['start'])) { + $start_range = $options['start']; + } + $end_range = ""; + if (isset($options['end'])) { + $end_range = $options['end']; + } + $options[self::OSS_METHOD] = self::OSS_HTTP_PUT; + $options[self::OSS_BUCKET] = $toBucket; + $options[self::OSS_OBJECT] = $toObject; + $options[self::OSS_PART_NUM] = $partNumber; + $options[self::OSS_UPLOAD_ID] = $uploadId; + + if (!isset($options[self::OSS_HEADERS])) { + $options[self::OSS_HEADERS] = array(); + } + + $options[self::OSS_HEADERS][self::OSS_OBJECT_COPY_SOURCE] = '/' . $fromBucket . '/' . $fromObject; + $options[self::OSS_HEADERS][self::OSS_OBJECT_COPY_SOURCE_RANGE] = "bytes=" . $start_range . "-" . $end_range; + $response = $this->auth($options); + $result = new UploadPartResult($response); + return $result->getData(); + } + + /** + * multipart上传统一封装,从初始化到完成multipart,以及出错后中止动作 + * + * @param string $bucket bucket名称 + * @param string $object object名称 + * @param string $file 需要上传的本地文件的路径 + * @param array $options Key-Value数组 + * @return null + * @throws OssException + */ + public function multiuploadFile($bucket, $object, $file, $options = null) + { + $this->precheckCommon($bucket, $object, $options); + if (isset($options[self::OSS_LENGTH])) { + $options[self::OSS_CONTENT_LENGTH] = $options[self::OSS_LENGTH]; + unset($options[self::OSS_LENGTH]); + } + if (empty($file)) { + throw new OssException("parameter invalid, file is empty"); + } + $uploadFile = OssUtil::encodePath($file); + if (!isset($options[self::OSS_CONTENT_TYPE])) { + $options[self::OSS_CONTENT_TYPE] = $this->getMimeType($object, $uploadFile); + } + + $upload_position = isset($options[self::OSS_SEEK_TO]) ? (integer)$options[self::OSS_SEEK_TO] : 0; + + if (isset($options[self::OSS_CONTENT_LENGTH])) { + $upload_file_size = (integer)$options[self::OSS_CONTENT_LENGTH]; + } else { + $upload_file_size = filesize($uploadFile); + if ($upload_file_size !== false) { + $upload_file_size -= $upload_position; + } + } + + if ($upload_position === false || !isset($upload_file_size) || $upload_file_size === false || $upload_file_size < 0) { + throw new OssException('The size of `fileUpload` cannot be determined in ' . __FUNCTION__ . '().'); + } + // 处理partSize + if (isset($options[self::OSS_PART_SIZE])) { + $options[self::OSS_PART_SIZE] = $this->computePartSize($options[self::OSS_PART_SIZE]); + } else { + $options[self::OSS_PART_SIZE] = self::OSS_MID_PART_SIZE; + } + + $is_check_md5 = $this->isCheckMD5($options); + // 如果上传的文件小于partSize,则直接使用普通方式上传 + if ($upload_file_size < $options[self::OSS_PART_SIZE] && !isset($options[self::OSS_UPLOAD_ID])) { + return $this->uploadFile($bucket, $object, $uploadFile, $options); + } + + // 初始化multipart + if (isset($options[self::OSS_UPLOAD_ID])) { + $uploadId = $options[self::OSS_UPLOAD_ID]; + } else { + // 初始化 + $uploadId = $this->initiateMultipartUpload($bucket, $object, $options); + } + + // 获取的分片 + $pieces = $this->generateMultiuploadParts($upload_file_size, (integer)$options[self::OSS_PART_SIZE]); + $response_upload_part = array(); + foreach ($pieces as $i => $piece) { + $from_pos = $upload_position + (integer)$piece[self::OSS_SEEK_TO]; + $to_pos = (integer)$piece[self::OSS_LENGTH] + $from_pos - 1; + $up_options = array( + self::OSS_FILE_UPLOAD => $uploadFile, + self::OSS_PART_NUM => ($i + 1), + self::OSS_SEEK_TO => $from_pos, + self::OSS_LENGTH => $to_pos - $from_pos + 1, + self::OSS_CHECK_MD5 => $is_check_md5, + ); + if ($is_check_md5) { + $content_md5 = OssUtil::getMd5SumForFile($uploadFile, $from_pos, $to_pos); + $up_options[self::OSS_CONTENT_MD5] = $content_md5; + } + $response_upload_part[] = $this->uploadPart($bucket, $object, $uploadId, $up_options); + } + + $uploadParts = array(); + foreach ($response_upload_part as $i => $etag) { + $uploadParts[] = array( + 'PartNumber' => ($i + 1), + 'ETag' => $etag, + ); + } + return $this->completeMultipartUpload($bucket, $object, $uploadId, $uploadParts); + } + + /** + * 上传本地目录内的文件或者目录到指定bucket的指定prefix的object中 + * + * @param string $bucket bucket名称 + * @param string $prefix 需要上传到的object的key前缀,可以理解成bucket中的子目录,结尾不能是'/',接口中会补充'/' + * @param string $localDirectory 需要上传的本地目录 + * @param string $exclude 需要排除的目录 + * @param bool $recursive 是否递归的上传localDirectory下的子目录内容 + * @param bool $checkMd5 + * @return array 返回两个列表 array("succeededList" => array("object"), "failedList" => array("object"=>"errorMessage")) + * @throws OssException + */ + public function uploadDir($bucket, $prefix, $localDirectory, $exclude = '.|..|.svn|.git', $recursive = false, $checkMd5 = true) + { + $retArray = array("succeededList" => array(), "failedList" => array()); + if (empty($bucket)) throw new OssException("parameter error, bucket is empty"); + if (!is_string($prefix)) throw new OssException("parameter error, prefix is not string"); + if (empty($localDirectory)) throw new OssException("parameter error, localDirectory is empty"); + $directory = $localDirectory; + $directory = OssUtil::encodePath($directory); + //判断是否目录 + if (!is_dir($directory)) { + throw new OssException('parameter error: ' . $directory . ' is not a directory, please check it'); + } + //read directory + $file_list_array = OssUtil::readDir($directory, $exclude, $recursive); + if (!$file_list_array) { + throw new OssException($directory . ' is empty...'); + } + foreach ($file_list_array as $k => $item) { + if (is_dir($item['path'])) { + continue; + } + $options = array( + self::OSS_PART_SIZE => self::OSS_MIN_PART_SIZE, + self::OSS_CHECK_MD5 => $checkMd5, + ); + $realObject = (!empty($prefix) ? $prefix . '/' : '') . $item['file']; + + try { + $this->multiuploadFile($bucket, $realObject, $item['path'], $options); + $retArray["succeededList"][] = $realObject; + } catch (OssException $e) { + $retArray["failedList"][$realObject] = $e->getMessage(); + } + } + return $retArray; + } + + /** + * 支持生成get和put签名, 用户可以生成一个具有一定有效期的 + * 签名过的url + * + * @param string $bucket + * @param string $object + * @param int $timeout + * @param string $method + * @param array $options Key-Value数组 + * @return string + * @throws OssException + */ + public function signUrl($bucket, $object, $timeout = 60, $method = self::OSS_HTTP_GET, $options = NULL) + { + $this->precheckCommon($bucket, $object, $options); + //method + if (self::OSS_HTTP_GET !== $method && self::OSS_HTTP_PUT !== $method) { + throw new OssException("method is invalid"); + } + $options[self::OSS_BUCKET] = $bucket; + $options[self::OSS_OBJECT] = $object; + $options[self::OSS_METHOD] = $method; + if (!isset($options[self::OSS_CONTENT_TYPE])) { + $options[self::OSS_CONTENT_TYPE] = ''; + } + $timeout = time() + $timeout; + $options[self::OSS_PREAUTH] = $timeout; + $options[self::OSS_DATE] = $timeout; + $this->setSignStsInUrl(true); + return $this->auth($options); + } + + /** + * 检测options参数 + * + * @param array $options + * @throws OssException + */ + private function precheckOptions(&$options) + { + OssUtil::validateOptions($options); + if (!$options) { + $options = array(); + } + } + + /** + * 校验bucket参数 + * + * @param string $bucket + * @param string $errMsg + * @throws OssException + */ + private function precheckBucket($bucket, $errMsg = 'bucket is not allowed empty') + { + OssUtil::throwOssExceptionWithMessageIfEmpty($bucket, $errMsg); + } + + /** + * 校验object参数 + * + * @param string $object + * @throws OssException + */ + private function precheckObject($object) + { + OssUtil::throwOssExceptionWithMessageIfEmpty($object, "object name is empty"); + } + + /** + * 校验option restore + * + * @param string $restore + * @throws OssException + */ + private function precheckStorage($storage) + { + if (is_string($storage)) { + switch ($storage) { + case self::OSS_STORAGE_ARCHIVE: + return; + case self::OSS_STORAGE_IA: + return; + case self::OSS_STORAGE_STANDARD: + return; + default: + break; + } + } + throw new OssException('storage name is invalid'); + } + + /** + * 校验bucket,options参数 + * + * @param string $bucket + * @param string $object + * @param array $options + * @param bool $isCheckObject + */ + private function precheckCommon($bucket, $object, &$options, $isCheckObject = true) + { + if ($isCheckObject) { + $this->precheckObject($object); + } + $this->precheckOptions($options); + $this->precheckBucket($bucket); + } + + /** + * 参数校验 + * + * @param array $options + * @param string $param + * @param string $funcName + * @throws OssException + */ + private function precheckParam($options, $param, $funcName) + { + if (!isset($options[$param])) { + throw new OssException('The `' . $param . '` options is required in ' . $funcName . '().'); + } + } + + /** + * 检测md5 + * + * @param array $options + * @return bool|null + */ + private function isCheckMD5($options) + { + return $this->getValue($options, self::OSS_CHECK_MD5, false, true, true); + } + + /** + * 获取value + * + * @param array $options + * @param string $key + * @param string $default + * @param bool $isCheckEmpty + * @param bool $isCheckBool + * @return bool|null + */ + private function getValue($options, $key, $default = NULL, $isCheckEmpty = false, $isCheckBool = false) + { + $value = $default; + if (isset($options[$key])) { + if ($isCheckEmpty) { + if (!empty($options[$key])) { + $value = $options[$key]; + } + } else { + $value = $options[$key]; + } + unset($options[$key]); + } + if ($isCheckBool) { + if ($value !== true && $value !== false) { + $value = false; + } + } + return $value; + } + + /** + * 获取mimetype类型 + * + * @param string $object + * @return string + */ + private function getMimeType($object, $file = null) + { + if (!is_null($file)) { + $type = MimeTypes::getMimetype($file); + if (!is_null($type)) { + return $type; + } + } + + $type = MimeTypes::getMimetype($object); + if (!is_null($type)) { + return $type; + } + + return self::DEFAULT_CONTENT_TYPE; + } + + /** + * 验证并且执行请求,按照OSS Api协议,执行操作 + * + * @param array $options + * @return ResponseCore + * @throws OssException + * @throws RequestCore_Exception + */ + private function auth($options) + { + OssUtil::validateOptions($options); + //验证bucket,list_bucket时不需要验证 + $this->authPrecheckBucket($options); + //验证object + $this->authPrecheckObject($options); + //Object名称的编码必须是utf8 + $this->authPrecheckObjectEncoding($options); + //验证ACL + $this->authPrecheckAcl($options); + // 获得当次请求使用的协议头,是https还是http + $scheme = $this->useSSL ? 'https://' : 'http://'; + // 获得当次请求使用的hostname,如果是公共域名或者专有域名,bucket拼在前面构成三级域名 + $hostname = $this->generateHostname($options[self::OSS_BUCKET]); + $string_to_sign = ''; + $headers = $this->generateHeaders($options, $hostname); + $signable_query_string_params = $this->generateSignableQueryStringParam($options); + $signable_query_string = OssUtil::toQueryString($signable_query_string_params); + $resource_uri = $this->generateResourceUri($options); + //生成请求URL + $conjunction = '?'; + $non_signable_resource = ''; + if (isset($options[self::OSS_SUB_RESOURCE])) { + $conjunction = '&'; + } + if ($signable_query_string !== '') { + $signable_query_string = $conjunction . $signable_query_string; + $conjunction = '&'; + } + $query_string = $this->generateQueryString($options); + if ($query_string !== '') { + $non_signable_resource .= $conjunction . $query_string; + $conjunction = '&'; + } + $this->requestUrl = $scheme . $hostname . $resource_uri . $signable_query_string . $non_signable_resource; + + //创建请求 + $request = new RequestCore($this->requestUrl, $this->requestProxy); + $request->set_useragent($this->generateUserAgent()); + // Streaming uploads + if (isset($options[self::OSS_FILE_UPLOAD])) { + if (is_resource($options[self::OSS_FILE_UPLOAD])) { + $length = null; + + if (isset($options[self::OSS_CONTENT_LENGTH])) { + $length = $options[self::OSS_CONTENT_LENGTH]; + } elseif (isset($options[self::OSS_SEEK_TO])) { + $stats = fstat($options[self::OSS_FILE_UPLOAD]); + if ($stats && $stats[self::OSS_SIZE] >= 0) { + $length = $stats[self::OSS_SIZE] - (integer)$options[self::OSS_SEEK_TO]; + } + } + $request->set_read_stream($options[self::OSS_FILE_UPLOAD], $length); + } else { + $request->set_read_file($options[self::OSS_FILE_UPLOAD]); + $length = $request->read_stream_size; + if (isset($options[self::OSS_CONTENT_LENGTH])) { + $length = $options[self::OSS_CONTENT_LENGTH]; + } elseif (isset($options[self::OSS_SEEK_TO]) && isset($length)) { + $length -= (integer)$options[self::OSS_SEEK_TO]; + } + $request->set_read_stream_size($length); + } + } + if (isset($options[self::OSS_SEEK_TO])) { + $request->set_seek_position((integer)$options[self::OSS_SEEK_TO]); + } + if (isset($options[self::OSS_FILE_DOWNLOAD])) { + if (is_resource($options[self::OSS_FILE_DOWNLOAD])) { + $request->set_write_stream($options[self::OSS_FILE_DOWNLOAD]); + } else { + $request->set_write_file($options[self::OSS_FILE_DOWNLOAD]); + } + } + + if (isset($options[self::OSS_METHOD])) { + $request->set_method($options[self::OSS_METHOD]); + $string_to_sign .= $options[self::OSS_METHOD] . "\n"; + } + + if (isset($options[self::OSS_CONTENT])) { + $request->set_body($options[self::OSS_CONTENT]); + if ($headers[self::OSS_CONTENT_TYPE] === 'application/x-www-form-urlencoded') { + $headers[self::OSS_CONTENT_TYPE] = 'application/octet-stream'; + } + + $headers[self::OSS_CONTENT_LENGTH] = strlen($options[self::OSS_CONTENT]); + $headers[self::OSS_CONTENT_MD5] = base64_encode(md5($options[self::OSS_CONTENT], true)); + } + + if (isset($options[self::OSS_CALLBACK])) { + $headers[self::OSS_CALLBACK] = base64_encode($options[self::OSS_CALLBACK]); + } + if (isset($options[self::OSS_CALLBACK_VAR])) { + $headers[self::OSS_CALLBACK_VAR] = base64_encode($options[self::OSS_CALLBACK_VAR]); + } + + if (!isset($headers[self::OSS_ACCEPT_ENCODING])) { + $headers[self::OSS_ACCEPT_ENCODING] = ''; + } + + uksort($headers, 'strnatcasecmp'); + + foreach ($headers as $header_key => $header_value) { + $header_value = str_replace(array("\r", "\n"), '', $header_value); + if ($header_value !== '' || $header_key === self::OSS_ACCEPT_ENCODING) { + $request->add_header($header_key, $header_value); + } + + if ( + strtolower($header_key) === 'content-md5' || + strtolower($header_key) === 'content-type' || + strtolower($header_key) === 'date' || + (isset($options['self::OSS_PREAUTH']) && (integer)$options['self::OSS_PREAUTH'] > 0) + ) { + $string_to_sign .= $header_value . "\n"; + } elseif (substr(strtolower($header_key), 0, 6) === self::OSS_DEFAULT_PREFIX) { + $string_to_sign .= strtolower($header_key) . ':' . $header_value . "\n"; + } + } + // 生成 signable_resource + $signable_resource = $this->generateSignableResource($options); + $string_to_sign .= rawurldecode($signable_resource) . urldecode($signable_query_string); + + //对?后面的要签名的string字母序排序 + $string_to_sign_ordered = $this->stringToSignSorted($string_to_sign); + + $signature = base64_encode(hash_hmac('sha1', $string_to_sign_ordered, $this->accessKeySecret, true)); + $request->add_header('Authorization', 'OSS ' . $this->accessKeyId . ':' . $signature); + + if (isset($options[self::OSS_PREAUTH]) && (integer)$options[self::OSS_PREAUTH] > 0) { + $signed_url = $this->requestUrl . $conjunction . self::OSS_URL_ACCESS_KEY_ID . '=' . rawurlencode($this->accessKeyId) . '&' . self::OSS_URL_EXPIRES . '=' . $options[self::OSS_PREAUTH] . '&' . self::OSS_URL_SIGNATURE . '=' . rawurlencode($signature); + return $signed_url; + } elseif (isset($options[self::OSS_PREAUTH])) { + return $this->requestUrl; + } + + if ($this->timeout !== 0) { + $request->timeout = $this->timeout; + } + if ($this->connectTimeout !== 0) { + $request->connect_timeout = $this->connectTimeout; + } + + try { + $request->send_request(); + } catch (RequestCore_Exception $e) { + throw(new OssException('RequestCoreException: ' . $e->getMessage())); + } + $response_header = $request->get_response_header(); + $response_header['oss-request-url'] = $this->requestUrl; + $response_header['oss-redirects'] = $this->redirects; + $response_header['oss-stringtosign'] = $string_to_sign; + $response_header['oss-requestheaders'] = $request->request_headers; + + $data = new ResponseCore($response_header, $request->get_response_body(), $request->get_response_code()); + //retry if OSS Internal Error + if ((integer)$request->get_response_code() === 500) { + if ($this->redirects <= $this->maxRetries) { + //设置休眠 + $delay = (integer)(pow(4, $this->redirects) * 100000); + usleep($delay); + $this->redirects++; + $data = $this->auth($options); + } + } + + $this->redirects = 0; + return $data; + } + + /** + * 设置最大尝试次数 + * + * @param int $maxRetries + * @return void + */ + public function setMaxTries($maxRetries = 3) + { + $this->maxRetries = $maxRetries; + } + + /** + * 获取最大尝试次数 + * + * @return int + */ + public function getMaxRetries() + { + return $this->maxRetries; + } + + /** + * 打开sts enable标志,使用户构造函数中传入的$sts生效 + * + * @param boolean $enable + */ + public function setSignStsInUrl($enable) + { + $this->enableStsInUrl = $enable; + } + + /** + * @return boolean + */ + public function isUseSSL() + { + return $this->useSSL; + } + + /** + * @param boolean $useSSL + */ + public function setUseSSL($useSSL) + { + $this->useSSL = $useSSL; + } + + /** + * 检查bucket名称格式是否正确,如果非法抛出异常 + * + * @param $options + * @throws OssException + */ + private function authPrecheckBucket($options) + { + if (!(('/' == $options[self::OSS_OBJECT]) && ('' == $options[self::OSS_BUCKET]) && ('GET' == $options[self::OSS_METHOD])) && !OssUtil::validateBucket($options[self::OSS_BUCKET])) { + throw new OssException('"' . $options[self::OSS_BUCKET] . '"' . 'bucket name is invalid'); + } + } + + /** + * + * 检查object名称格式是否正确,如果非法抛出异常 + * + * @param $options + * @throws OssException + */ + private function authPrecheckObject($options) + { + if (isset($options[self::OSS_OBJECT]) && $options[self::OSS_OBJECT] === '/') { + return; + } + + if (isset($options[self::OSS_OBJECT]) && !OssUtil::validateObject($options[self::OSS_OBJECT])) { + throw new OssException('"' . $options[self::OSS_OBJECT] . '"' . ' object name is invalid'); + } + } + + /** + * 检查object的编码,如果是gbk或者gb2312则尝试将其转化为utf8编码 + * + * @param mixed $options 参数 + */ + private function authPrecheckObjectEncoding(&$options) + { + $tmp_object = $options[self::OSS_OBJECT]; + try { + if (OssUtil::isGb2312($options[self::OSS_OBJECT])) { + $options[self::OSS_OBJECT] = iconv('GB2312', "UTF-8//IGNORE", $options[self::OSS_OBJECT]); + } elseif (OssUtil::checkChar($options[self::OSS_OBJECT], true)) { + $options[self::OSS_OBJECT] = iconv('GBK', "UTF-8//IGNORE", $options[self::OSS_OBJECT]); + } + } catch (\Exception $e) { + try { + $tmp_object = iconv(mb_detect_encoding($tmp_object), "UTF-8", $tmp_object); + } catch (\Exception $e) { + } + } + $options[self::OSS_OBJECT] = $tmp_object; + } + + /** + * 检查ACL是否是预定义中三种之一,如果不是抛出异常 + * + * @param $options + * @throws OssException + */ + private function authPrecheckAcl($options) + { + if (isset($options[self::OSS_HEADERS][self::OSS_ACL]) && !empty($options[self::OSS_HEADERS][self::OSS_ACL])) { + if (!in_array(strtolower($options[self::OSS_HEADERS][self::OSS_ACL]), self::$OSS_ACL_TYPES)) { + throw new OssException($options[self::OSS_HEADERS][self::OSS_ACL] . ':' . 'acl is invalid(private,public-read,public-read-write)'); + } + } + } + + /** + * 获得档次请求使用的域名 + * bucket在前的三级域名,或者二级域名,如果是cname或者ip的话,则是二级域名 + * + * @param $bucket + * @return string 剥掉协议头的域名 + */ + private function generateHostname($bucket) + { + if ($this->hostType === self::OSS_HOST_TYPE_IP) { + $hostname = $this->hostname; + } elseif ($this->hostType === self::OSS_HOST_TYPE_CNAME) { + $hostname = $this->hostname; + } else { + // 专有域或者官网endpoint + $hostname = ($bucket == '') ? $this->hostname : ($bucket . '.') . $this->hostname; + } + return $hostname; + } + + /** + * 获得当次请求的资源定位字段 + * + * @param $options + * @return string 资源定位字段 + */ + private function generateResourceUri($options) + { + $resource_uri = ""; + + // resource_uri + bucket + if (isset($options[self::OSS_BUCKET]) && '' !== $options[self::OSS_BUCKET]) { + if ($this->hostType === self::OSS_HOST_TYPE_IP) { + $resource_uri = '/' . $options[self::OSS_BUCKET]; + } + } + + // resource_uri + object + if (isset($options[self::OSS_OBJECT]) && '/' !== $options[self::OSS_OBJECT]) { + $resource_uri .= '/' . str_replace(array('%2F', '%25'), array('/', '%'), rawurlencode($options[self::OSS_OBJECT])); + } + + // resource_uri + sub_resource + $conjunction = '?'; + if (isset($options[self::OSS_SUB_RESOURCE])) { + $resource_uri .= $conjunction . $options[self::OSS_SUB_RESOURCE]; + } + return $resource_uri; + } + + /** + * 生成signalbe_query_string_param, array类型 + * + * @param array $options + * @return array + */ + private function generateSignableQueryStringParam($options) + { + $signableQueryStringParams = array(); + $signableList = array( + self::OSS_PART_NUM, + 'response-content-type', + 'response-content-language', + 'response-cache-control', + 'response-content-encoding', + 'response-expires', + 'response-content-disposition', + self::OSS_UPLOAD_ID, + self::OSS_COMP, + self::OSS_LIVE_CHANNEL_STATUS, + self::OSS_LIVE_CHANNEL_START_TIME, + self::OSS_LIVE_CHANNEL_END_TIME, + self::OSS_PROCESS, + self::OSS_POSITION, + self::OSS_SYMLINK, + self::OSS_RESTORE, + ); + + foreach ($signableList as $item) { + if (isset($options[$item])) { + $signableQueryStringParams[$item] = $options[$item]; + } + } + + if ($this->enableStsInUrl && (!is_null($this->securityToken))) { + $signableQueryStringParams["security-token"] = $this->securityToken; + } + + return $signableQueryStringParams; + } + + /** + * 生成用于签名resource段 + * + * @param mixed $options + * @return string + */ + private function generateSignableResource($options) + { + $signableResource = ""; + $signableResource .= '/'; + if (isset($options[self::OSS_BUCKET]) && '' !== $options[self::OSS_BUCKET]) { + $signableResource .= $options[self::OSS_BUCKET]; + // 如果操作没有Object操作的话,这里最后是否有斜线有个trick,ip的域名下,不需要加'/', 否则需要加'/' + if ($options[self::OSS_OBJECT] == '/') { + if ($this->hostType !== self::OSS_HOST_TYPE_IP) { + $signableResource .= "/"; + } + } + } + //signable_resource + object + if (isset($options[self::OSS_OBJECT]) && '/' !== $options[self::OSS_OBJECT]) { + $signableResource .= '/' . str_replace(array('%2F', '%25'), array('/', '%'), rawurlencode($options[self::OSS_OBJECT])); + } + if (isset($options[self::OSS_SUB_RESOURCE])) { + $signableResource .= '?' . $options[self::OSS_SUB_RESOURCE]; + } + return $signableResource; + } + + /** + * 生成query_string + * + * @param mixed $options + * @return string + */ + private function generateQueryString($options) + { + //请求参数 + $queryStringParams = array(); + if (isset($options[self::OSS_QUERY_STRING])) { + $queryStringParams = array_merge($queryStringParams, $options[self::OSS_QUERY_STRING]); + } + return OssUtil::toQueryString($queryStringParams); + } + + private function stringToSignSorted($string_to_sign) + { + $queryStringSorted = ''; + $explodeResult = explode('?', $string_to_sign); + $index = count($explodeResult); + if ($index === 1) + return $string_to_sign; + + $queryStringParams = explode('&', $explodeResult[$index - 1]); + sort($queryStringParams); + + foreach($queryStringParams as $params) + { + $queryStringSorted .= $params . '&'; + } + + $queryStringSorted = substr($queryStringSorted, 0, -1); + + return $explodeResult[0] . '?' . $queryStringSorted; + } + + /** + * 初始化headers + * + * @param mixed $options + * @param string $hostname hostname + * @return array + */ + private function generateHeaders($options, $hostname) + { + $headers = array( + self::OSS_CONTENT_MD5 => '', + self::OSS_CONTENT_TYPE => isset($options[self::OSS_CONTENT_TYPE]) ? $options[self::OSS_CONTENT_TYPE] : self::DEFAULT_CONTENT_TYPE, + self::OSS_DATE => isset($options[self::OSS_DATE]) ? $options[self::OSS_DATE] : gmdate('D, d M Y H:i:s \G\M\T'), + self::OSS_HOST => $hostname, + ); + if (isset($options[self::OSS_CONTENT_MD5])) { + $headers[self::OSS_CONTENT_MD5] = $options[self::OSS_CONTENT_MD5]; + } + + //添加stsSecurityToken + if ((!is_null($this->securityToken)) && (!$this->enableStsInUrl)) { + $headers[self::OSS_SECURITY_TOKEN] = $this->securityToken; + } + //合并HTTP headers + if (isset($options[self::OSS_HEADERS])) { + $headers = array_merge($headers, $options[self::OSS_HEADERS]); + } + return $headers; + } + + /** + * 生成请求用的UserAgent + * + * @return string + */ + private function generateUserAgent() + { + return self::OSS_NAME . "/" . self::OSS_VERSION . " (" . php_uname('s') . "/" . php_uname('r') . "/" . php_uname('m') . ";" . PHP_VERSION . ")"; + } + + /** + * 检查endpoint的种类 + * 如有有协议头,剥去协议头 + * 并且根据参数 is_cname 和endpoint本身,判定域名类型,是ip,cname,还是专有域或者官网域名 + * + * @param string $endpoint + * @param boolean $isCName + * @return string 剥掉协议头的域名 + */ + private function checkEndpoint($endpoint, $isCName) + { + $ret_endpoint = null; + if (strpos($endpoint, 'http://') === 0) { + $ret_endpoint = substr($endpoint, strlen('http://')); + } elseif (strpos($endpoint, 'https://') === 0) { + $ret_endpoint = substr($endpoint, strlen('https://')); + $this->useSSL = true; + } else { + $ret_endpoint = $endpoint; + } + + if ($isCName) { + $this->hostType = self::OSS_HOST_TYPE_CNAME; + } elseif (OssUtil::isIPFormat($ret_endpoint)) { + $this->hostType = self::OSS_HOST_TYPE_IP; + } else { + $this->hostType = self::OSS_HOST_TYPE_NORMAL; + } + return $ret_endpoint; + } + + /** + * 用来检查sdk所以来的扩展是否打开 + * + * @throws OssException + */ + public static function checkEnv() + { + if (function_exists('get_loaded_extensions')) { + //检测curl扩展 + $enabled_extension = array("curl"); + $extensions = get_loaded_extensions(); + if ($extensions) { + foreach ($enabled_extension as $item) { + if (!in_array($item, $extensions)) { + throw new OssException("Extension {" . $item . "} is not installed or not enabled, please check your php env."); + } + } + } else { + throw new OssException("function get_loaded_extensions not found."); + } + } else { + throw new OssException('Function get_loaded_extensions has been disabled, please check php config.'); + } + } + + /** + //* 设置http库的请求超时时间,单位秒 + * + * @param int $timeout + */ + public function setTimeout($timeout) + { + $this->timeout = $timeout; + } + + /** + * 设置http库的连接超时时间,单位秒 + * + * @param int $connectTimeout + */ + public function setConnectTimeout($connectTimeout) + { + $this->connectTimeout = $connectTimeout; + } + + // 生命周期相关常量 + const OSS_LIFECYCLE_EXPIRATION = "Expiration"; + const OSS_LIFECYCLE_TIMING_DAYS = "Days"; + const OSS_LIFECYCLE_TIMING_DATE = "Date"; + //OSS 内部常量 + const OSS_BUCKET = 'bucket'; + const OSS_OBJECT = 'object'; + const OSS_HEADERS = OssUtil::OSS_HEADERS; + const OSS_METHOD = 'method'; + const OSS_QUERY = 'query'; + const OSS_BASENAME = 'basename'; + const OSS_MAX_KEYS = 'max-keys'; + const OSS_UPLOAD_ID = 'uploadId'; + const OSS_PART_NUM = 'partNumber'; + const OSS_COMP = 'comp'; + const OSS_LIVE_CHANNEL_STATUS = 'status'; + const OSS_LIVE_CHANNEL_START_TIME = 'startTime'; + const OSS_LIVE_CHANNEL_END_TIME = 'endTime'; + const OSS_POSITION = 'position'; + const OSS_MAX_KEYS_VALUE = 100; + const OSS_MAX_OBJECT_GROUP_VALUE = OssUtil::OSS_MAX_OBJECT_GROUP_VALUE; + const OSS_MAX_PART_SIZE = OssUtil::OSS_MAX_PART_SIZE; + const OSS_MID_PART_SIZE = OssUtil::OSS_MID_PART_SIZE; + const OSS_MIN_PART_SIZE = OssUtil::OSS_MIN_PART_SIZE; + const OSS_FILE_SLICE_SIZE = 8192; + const OSS_PREFIX = 'prefix'; + const OSS_DELIMITER = 'delimiter'; + const OSS_MARKER = 'marker'; + const OSS_ACCEPT_ENCODING = 'Accept-Encoding'; + const OSS_CONTENT_MD5 = 'Content-Md5'; + const OSS_SELF_CONTENT_MD5 = 'x-oss-meta-md5'; + const OSS_CONTENT_TYPE = 'Content-Type'; + const OSS_CONTENT_LENGTH = 'Content-Length'; + const OSS_IF_MODIFIED_SINCE = 'If-Modified-Since'; + const OSS_IF_UNMODIFIED_SINCE = 'If-Unmodified-Since'; + const OSS_IF_MATCH = 'If-Match'; + const OSS_IF_NONE_MATCH = 'If-None-Match'; + const OSS_CACHE_CONTROL = 'Cache-Control'; + const OSS_EXPIRES = 'Expires'; + const OSS_PREAUTH = 'preauth'; + const OSS_CONTENT_COING = 'Content-Coding'; + const OSS_CONTENT_DISPOSTION = 'Content-Disposition'; + const OSS_RANGE = 'range'; + const OSS_ETAG = 'etag'; + const OSS_LAST_MODIFIED = 'lastmodified'; + const OS_CONTENT_RANGE = 'Content-Range'; + const OSS_CONTENT = OssUtil::OSS_CONTENT; + const OSS_BODY = 'body'; + const OSS_LENGTH = OssUtil::OSS_LENGTH; + const OSS_HOST = 'Host'; + const OSS_DATE = 'Date'; + const OSS_AUTHORIZATION = 'Authorization'; + const OSS_FILE_DOWNLOAD = 'fileDownload'; + const OSS_FILE_UPLOAD = 'fileUpload'; + const OSS_PART_SIZE = 'partSize'; + const OSS_SEEK_TO = 'seekTo'; + const OSS_SIZE = 'size'; + const OSS_QUERY_STRING = 'query_string'; + const OSS_SUB_RESOURCE = 'sub_resource'; + const OSS_DEFAULT_PREFIX = 'x-oss-'; + const OSS_CHECK_MD5 = 'checkmd5'; + const DEFAULT_CONTENT_TYPE = 'application/octet-stream'; + const OSS_SYMLINK_TARGET = 'x-oss-symlink-target'; + const OSS_SYMLINK = 'symlink'; + const OSS_HTTP_CODE = 'http_code'; + const OSS_REQUEST_ID = 'x-oss-request-id'; + const OSS_INFO = 'info'; + const OSS_STORAGE = 'storage'; + const OSS_RESTORE = 'restore'; + const OSS_STORAGE_STANDARD = 'Standard'; + const OSS_STORAGE_IA = 'IA'; + const OSS_STORAGE_ARCHIVE = 'Archive'; + + //私有URL变量 + const OSS_URL_ACCESS_KEY_ID = 'OSSAccessKeyId'; + const OSS_URL_EXPIRES = 'Expires'; + const OSS_URL_SIGNATURE = 'Signature'; + //HTTP方法 + const OSS_HTTP_GET = 'GET'; + const OSS_HTTP_PUT = 'PUT'; + const OSS_HTTP_HEAD = 'HEAD'; + const OSS_HTTP_POST = 'POST'; + const OSS_HTTP_DELETE = 'DELETE'; + const OSS_HTTP_OPTIONS = 'OPTIONS'; + //其他常量 + const OSS_ACL = 'x-oss-acl'; + const OSS_OBJECT_ACL = 'x-oss-object-acl'; + const OSS_OBJECT_GROUP = 'x-oss-file-group'; + const OSS_MULTI_PART = 'uploads'; + const OSS_MULTI_DELETE = 'delete'; + const OSS_OBJECT_COPY_SOURCE = 'x-oss-copy-source'; + const OSS_OBJECT_COPY_SOURCE_RANGE = "x-oss-copy-source-range"; + const OSS_PROCESS = "x-oss-process"; + const OSS_CALLBACK = "x-oss-callback"; + const OSS_CALLBACK_VAR = "x-oss-callback-var"; + //支持STS SecurityToken + const OSS_SECURITY_TOKEN = "x-oss-security-token"; + const OSS_ACL_TYPE_PRIVATE = 'private'; + const OSS_ACL_TYPE_PUBLIC_READ = 'public-read'; + const OSS_ACL_TYPE_PUBLIC_READ_WRITE = 'public-read-write'; + const OSS_ENCODING_TYPE = "encoding-type"; + const OSS_ENCODING_TYPE_URL = "url"; + + // 域名类型 + const OSS_HOST_TYPE_NORMAL = "normal";//http://bucket.oss-cn-hangzhou.aliyuncs.com/object + const OSS_HOST_TYPE_IP = "ip"; //http://1.1.1.1/bucket/object + const OSS_HOST_TYPE_SPECIAL = 'special'; //http://bucket.guizhou.gov/object + const OSS_HOST_TYPE_CNAME = "cname"; //http://mydomain.com/object + //OSS ACL数组 + static $OSS_ACL_TYPES = array( + self::OSS_ACL_TYPE_PRIVATE, + self::OSS_ACL_TYPE_PUBLIC_READ, + self::OSS_ACL_TYPE_PUBLIC_READ_WRITE + ); + // OssClient版本信息 + const OSS_NAME = "aliyun-sdk-php"; + const OSS_VERSION = "2.3.0"; + const OSS_BUILD = "20180105"; + const OSS_AUTHOR = ""; + const OSS_OPTIONS_ORIGIN = 'Origin'; + const OSS_OPTIONS_REQUEST_METHOD = 'Access-Control-Request-Method'; + const OSS_OPTIONS_REQUEST_HEADERS = 'Access-Control-Request-Headers'; + + //是否使用ssl + private $useSSL = false; + private $maxRetries = 3; + private $redirects = 0; + + // 用户提供的域名类型,有四种 OSS_HOST_TYPE_NORMAL, OSS_HOST_TYPE_IP, OSS_HOST_TYPE_SPECIAL, OSS_HOST_TYPE_CNAME + private $hostType = self::OSS_HOST_TYPE_NORMAL; + private $requestUrl; + private $accessKeyId; + private $accessKeySecret; + private $hostname; + private $securityToken; + private $requestProxy = null; + private $enableStsInUrl = false; + private $timeout = 0; + private $connectTimeout = 0; +} diff --git a/resources/org/OSS/Result/AclResult.php b/resources/org/OSS/Result/AclResult.php new file mode 100644 index 0000000..6da0860 --- /dev/null +++ b/resources/org/OSS/Result/AclResult.php @@ -0,0 +1,32 @@ +rawResponse->body; + if (empty($content)) { + throw new OssException("body is null"); + } + $xml = simplexml_load_string($content); + if (isset($xml->AccessControlList->Grant)) { + return strval($xml->AccessControlList->Grant); + } else { + throw new OssException("xml format exception"); + } + } +} \ No newline at end of file diff --git a/resources/org/OSS/Result/AppendResult.php b/resources/org/OSS/Result/AppendResult.php new file mode 100644 index 0000000..433c03e --- /dev/null +++ b/resources/org/OSS/Result/AppendResult.php @@ -0,0 +1,27 @@ +rawResponse->header; + if (isset($header["x-oss-next-append-position"])) { + return intval($header["x-oss-next-append-position"]); + } + throw new OssException("cannot get next-append-position"); + } +} \ No newline at end of file diff --git a/resources/org/OSS/Result/BodyResult.php b/resources/org/OSS/Result/BodyResult.php new file mode 100644 index 0000000..44ba15e --- /dev/null +++ b/resources/org/OSS/Result/BodyResult.php @@ -0,0 +1,19 @@ +rawResponse->body) ? "" : $this->rawResponse->body; + } +} \ No newline at end of file diff --git a/resources/org/OSS/Result/CallbackResult.php b/resources/org/OSS/Result/CallbackResult.php new file mode 100644 index 0000000..514e985 --- /dev/null +++ b/resources/org/OSS/Result/CallbackResult.php @@ -0,0 +1,21 @@ +rawResponse->status; + if ((int)(intval($status) / 100) == 2 && (int)(intval($status)) !== 203) { + return true; + } + return false; + } + +} diff --git a/resources/org/OSS/Result/CopyObjectResult.php b/resources/org/OSS/Result/CopyObjectResult.php new file mode 100644 index 0000000..498723e --- /dev/null +++ b/resources/org/OSS/Result/CopyObjectResult.php @@ -0,0 +1,30 @@ +rawResponse->body; + $xml = simplexml_load_string($body); + $result = array(); + + if (isset($xml->LastModified)) { + $result[] = $xml->LastModified; + } + if (isset($xml->ETag)) { + $result[] = $xml->ETag; + } + + return $result; + } +} diff --git a/resources/org/OSS/Result/DeleteObjectsResult.php b/resources/org/OSS/Result/DeleteObjectsResult.php new file mode 100644 index 0000000..dc373b8 --- /dev/null +++ b/resources/org/OSS/Result/DeleteObjectsResult.php @@ -0,0 +1,27 @@ +rawResponse->body; + $xml = simplexml_load_string($body); + $objects = array(); + + if (isset($xml->Deleted)) { + foreach($xml->Deleted as $deleteKey) + $objects[] = $deleteKey->Key; + } + return $objects; + } +} diff --git a/resources/org/OSS/Result/ExistResult.php b/resources/org/OSS/Result/ExistResult.php new file mode 100644 index 0000000..f7aa287 --- /dev/null +++ b/resources/org/OSS/Result/ExistResult.php @@ -0,0 +1,35 @@ +rawResponse->status) === 200 ? true : false; + } + + /** + * 根据返回http状态码判断,[200-299]即认为是OK, 判断是否存在的接口,404也认为是一种 + * 有效响应 + * + * @return bool + */ + protected function isResponseOk() + { + $status = $this->rawResponse->status; + if ((int)(intval($status) / 100) == 2 || (int)(intval($status)) === 404) { + return true; + } + return false; + } + +} \ No newline at end of file diff --git a/resources/org/OSS/Result/GetCnameResult.php b/resources/org/OSS/Result/GetCnameResult.php new file mode 100644 index 0000000..eed01f9 --- /dev/null +++ b/resources/org/OSS/Result/GetCnameResult.php @@ -0,0 +1,19 @@ +rawResponse->body; + $config = new CnameConfig(); + $config->parseFromXml($content); + return $config; + } +} \ No newline at end of file diff --git a/resources/org/OSS/Result/GetCorsResult.php b/resources/org/OSS/Result/GetCorsResult.php new file mode 100644 index 0000000..a51afe2 --- /dev/null +++ b/resources/org/OSS/Result/GetCorsResult.php @@ -0,0 +1,35 @@ +rawResponse->body; + $config = new CorsConfig(); + $config->parseFromXml($content); + return $config; + } + + /** + * 根据返回http状态码判断,[200-299]即认为是OK, 获取bucket相关配置的接口,404也认为是一种 + * 有效响应 + * + * @return bool + */ + protected function isResponseOk() + { + $status = $this->rawResponse->status; + if ((int)(intval($status) / 100) == 2 || (int)(intval($status)) === 404) { + return true; + } + return false; + } + +} \ No newline at end of file diff --git a/resources/org/OSS/Result/GetLifecycleResult.php b/resources/org/OSS/Result/GetLifecycleResult.php new file mode 100644 index 0000000..6b440c3 --- /dev/null +++ b/resources/org/OSS/Result/GetLifecycleResult.php @@ -0,0 +1,41 @@ +rawResponse->body; + $config = new LifecycleConfig(); + $config->parseFromXml($content); + return $config; + } + + /** + * 根据返回http状态码判断,[200-299]即认为是OK, 获取bucket相关配置的接口,404也认为是一种 + * 有效响应 + * + * @return bool + */ + protected function isResponseOk() + { + $status = $this->rawResponse->status; + if ((int)(intval($status) / 100) == 2 || (int)(intval($status)) === 404) { + return true; + } + return false; + } +} \ No newline at end of file diff --git a/resources/org/OSS/Result/GetLiveChannelHistoryResult.php b/resources/org/OSS/Result/GetLiveChannelHistoryResult.php new file mode 100644 index 0000000..202a668 --- /dev/null +++ b/resources/org/OSS/Result/GetLiveChannelHistoryResult.php @@ -0,0 +1,19 @@ +rawResponse->body; + $channelList = new GetLiveChannelHistory(); + $channelList->parseFromXml($content); + return $channelList; + } +} diff --git a/resources/org/OSS/Result/GetLiveChannelInfoResult.php b/resources/org/OSS/Result/GetLiveChannelInfoResult.php new file mode 100644 index 0000000..d5a9005 --- /dev/null +++ b/resources/org/OSS/Result/GetLiveChannelInfoResult.php @@ -0,0 +1,19 @@ +rawResponse->body; + $channelList = new GetLiveChannelInfo(); + $channelList->parseFromXml($content); + return $channelList; + } +} diff --git a/resources/org/OSS/Result/GetLiveChannelStatusResult.php b/resources/org/OSS/Result/GetLiveChannelStatusResult.php new file mode 100644 index 0000000..6b8a60f --- /dev/null +++ b/resources/org/OSS/Result/GetLiveChannelStatusResult.php @@ -0,0 +1,19 @@ +rawResponse->body; + $channelList = new GetLiveChannelStatus(); + $channelList->parseFromXml($content); + return $channelList; + } +} diff --git a/resources/org/OSS/Result/GetLocationResult.php b/resources/org/OSS/Result/GetLocationResult.php new file mode 100644 index 0000000..71c4c96 --- /dev/null +++ b/resources/org/OSS/Result/GetLocationResult.php @@ -0,0 +1,30 @@ +rawResponse->body; + if (empty($content)) { + throw new OssException("body is null"); + } + $xml = simplexml_load_string($content); + return $xml; + } +} \ No newline at end of file diff --git a/resources/org/OSS/Result/GetLoggingResult.php b/resources/org/OSS/Result/GetLoggingResult.php new file mode 100644 index 0000000..72fc3ae --- /dev/null +++ b/resources/org/OSS/Result/GetLoggingResult.php @@ -0,0 +1,41 @@ +rawResponse->body; + $config = new LoggingConfig(); + $config->parseFromXml($content); + return $config; + } + + /** + * 根据返回http状态码判断,[200-299]即认为是OK, 获取bucket相关配置的接口,404也认为是一种 + * 有效响应 + * + * @return bool + */ + protected function isResponseOk() + { + $status = $this->rawResponse->status; + if ((int)(intval($status) / 100) == 2 || (int)(intval($status)) === 404) { + return true; + } + return false; + } +} \ No newline at end of file diff --git a/resources/org/OSS/Result/GetRefererResult.php b/resources/org/OSS/Result/GetRefererResult.php new file mode 100644 index 0000000..aee50d3 --- /dev/null +++ b/resources/org/OSS/Result/GetRefererResult.php @@ -0,0 +1,41 @@ +rawResponse->body; + $config = new RefererConfig(); + $config->parseFromXml($content); + return $config; + } + + /** + * 根据返回http状态码判断,[200-299]即认为是OK, 获取bucket相关配置的接口,404也认为是一种 + * 有效响应 + * + * @return bool + */ + protected function isResponseOk() + { + $status = $this->rawResponse->status; + if ((int)(intval($status) / 100) == 2 || (int)(intval($status)) === 404) { + return true; + } + return false; + } +} \ No newline at end of file diff --git a/resources/org/OSS/Result/GetStorageCapacityResult.php b/resources/org/OSS/Result/GetStorageCapacityResult.php new file mode 100644 index 0000000..84e4916 --- /dev/null +++ b/resources/org/OSS/Result/GetStorageCapacityResult.php @@ -0,0 +1,34 @@ +rawResponse->body; + if (empty($content)) { + throw new OssException("body is null"); + } + $xml = simplexml_load_string($content); + if (isset($xml->StorageCapacity)) { + return intval($xml->StorageCapacity); + } else { + throw new OssException("xml format exception"); + } + } +} \ No newline at end of file diff --git a/resources/org/OSS/Result/GetWebsiteResult.php b/resources/org/OSS/Result/GetWebsiteResult.php new file mode 100644 index 0000000..3099172 --- /dev/null +++ b/resources/org/OSS/Result/GetWebsiteResult.php @@ -0,0 +1,40 @@ +rawResponse->body; + $config = new WebsiteConfig(); + $config->parseFromXml($content); + return $config; + } + + /** + * 根据返回http状态码判断,[200-299]即认为是OK, 获取bucket相关配置的接口,404也认为是一种 + * 有效响应 + * + * @return bool + */ + protected function isResponseOk() + { + $status = $this->rawResponse->status; + if ((int)(intval($status) / 100) == 2 || (int)(intval($status)) === 404) { + return true; + } + return false; + } +} \ No newline at end of file diff --git a/resources/org/OSS/Result/HeaderResult.php b/resources/org/OSS/Result/HeaderResult.php new file mode 100644 index 0000000..c9aae56 --- /dev/null +++ b/resources/org/OSS/Result/HeaderResult.php @@ -0,0 +1,23 @@ +rawResponse->header) ? array() : $this->rawResponse->header; + } + +} \ No newline at end of file diff --git a/resources/org/OSS/Result/InitiateMultipartUploadResult.php b/resources/org/OSS/Result/InitiateMultipartUploadResult.php new file mode 100644 index 0000000..af985f2 --- /dev/null +++ b/resources/org/OSS/Result/InitiateMultipartUploadResult.php @@ -0,0 +1,29 @@ +rawResponse->body; + $xml = simplexml_load_string($content); + if (isset($xml->UploadId)) { + return strval($xml->UploadId); + } + throw new OssException("cannot get UploadId"); + } +} \ No newline at end of file diff --git a/resources/org/OSS/Result/ListBucketsResult.php b/resources/org/OSS/Result/ListBucketsResult.php new file mode 100644 index 0000000..a58fb2d --- /dev/null +++ b/resources/org/OSS/Result/ListBucketsResult.php @@ -0,0 +1,33 @@ +rawResponse->body; + $xml = new \SimpleXMLElement($content); + if (isset($xml->Buckets) && isset($xml->Buckets->Bucket)) { + foreach ($xml->Buckets->Bucket as $bucket) { + $bucketInfo = new BucketInfo(strval($bucket->Location), + strval($bucket->Name), + strval($bucket->CreationDate)); + $bucketList[] = $bucketInfo; + } + } + return new BucketListInfo($bucketList); + } +} \ No newline at end of file diff --git a/resources/org/OSS/Result/ListLiveChannelResult.php b/resources/org/OSS/Result/ListLiveChannelResult.php new file mode 100644 index 0000000..1a6e2a4 --- /dev/null +++ b/resources/org/OSS/Result/ListLiveChannelResult.php @@ -0,0 +1,16 @@ +rawResponse->body; + $channelList = new LiveChannelListInfo(); + $channelList->parseFromXml($content); + return $channelList; + } +} diff --git a/resources/org/OSS/Result/ListMultipartUploadResult.php b/resources/org/OSS/Result/ListMultipartUploadResult.php new file mode 100644 index 0000000..bcb20bf --- /dev/null +++ b/resources/org/OSS/Result/ListMultipartUploadResult.php @@ -0,0 +1,55 @@ +rawResponse->body; + $xml = simplexml_load_string($content); + + $encodingType = isset($xml->EncodingType) ? strval($xml->EncodingType) : ""; + $bucket = isset($xml->Bucket) ? strval($xml->Bucket) : ""; + $keyMarker = isset($xml->KeyMarker) ? strval($xml->KeyMarker) : ""; + $keyMarker = OssUtil::decodeKey($keyMarker, $encodingType); + $uploadIdMarker = isset($xml->UploadIdMarker) ? strval($xml->UploadIdMarker) : ""; + $nextKeyMarker = isset($xml->NextKeyMarker) ? strval($xml->NextKeyMarker) : ""; + $nextKeyMarker = OssUtil::decodeKey($nextKeyMarker, $encodingType); + $nextUploadIdMarker = isset($xml->NextUploadIdMarker) ? strval($xml->NextUploadIdMarker) : ""; + $delimiter = isset($xml->Delimiter) ? strval($xml->Delimiter) : ""; + $delimiter = OssUtil::decodeKey($delimiter, $encodingType); + $prefix = isset($xml->Prefix) ? strval($xml->Prefix) : ""; + $prefix = OssUtil::decodeKey($prefix, $encodingType); + $maxUploads = isset($xml->MaxUploads) ? intval($xml->MaxUploads) : 0; + $isTruncated = isset($xml->IsTruncated) ? strval($xml->IsTruncated) : ""; + $listUpload = array(); + + if (isset($xml->Upload)) { + foreach ($xml->Upload as $upload) { + $key = isset($upload->Key) ? strval($upload->Key) : ""; + $key = OssUtil::decodeKey($key, $encodingType); + $uploadId = isset($upload->UploadId) ? strval($upload->UploadId) : ""; + $initiated = isset($upload->Initiated) ? strval($upload->Initiated) : ""; + $listUpload[] = new UploadInfo($key, $uploadId, $initiated); + } + } + return new ListMultipartUploadInfo($bucket, $keyMarker, $uploadIdMarker, + $nextKeyMarker, $nextUploadIdMarker, + $delimiter, $prefix, $maxUploads, $isTruncated, $listUpload); + } +} \ No newline at end of file diff --git a/resources/org/OSS/Result/ListObjectsResult.php b/resources/org/OSS/Result/ListObjectsResult.php new file mode 100644 index 0000000..fcf493d --- /dev/null +++ b/resources/org/OSS/Result/ListObjectsResult.php @@ -0,0 +1,71 @@ +rawResponse->body); + $encodingType = isset($xml->EncodingType) ? strval($xml->EncodingType) : ""; + $objectList = $this->parseObjectList($xml, $encodingType); + $prefixList = $this->parsePrefixList($xml, $encodingType); + $bucketName = isset($xml->Name) ? strval($xml->Name) : ""; + $prefix = isset($xml->Prefix) ? strval($xml->Prefix) : ""; + $prefix = OssUtil::decodeKey($prefix, $encodingType); + $marker = isset($xml->Marker) ? strval($xml->Marker) : ""; + $marker = OssUtil::decodeKey($marker, $encodingType); + $maxKeys = isset($xml->MaxKeys) ? intval($xml->MaxKeys) : 0; + $delimiter = isset($xml->Delimiter) ? strval($xml->Delimiter) : ""; + $delimiter = OssUtil::decodeKey($delimiter, $encodingType); + $isTruncated = isset($xml->IsTruncated) ? strval($xml->IsTruncated) : ""; + $nextMarker = isset($xml->NextMarker) ? strval($xml->NextMarker) : ""; + $nextMarker = OssUtil::decodeKey($nextMarker, $encodingType); + return new ObjectListInfo($bucketName, $prefix, $marker, $nextMarker, $maxKeys, $delimiter, $isTruncated, $objectList, $prefixList); + } + + private function parseObjectList($xml, $encodingType) + { + $retList = array(); + if (isset($xml->Contents)) { + foreach ($xml->Contents as $content) { + $key = isset($content->Key) ? strval($content->Key) : ""; + $key = OssUtil::decodeKey($key, $encodingType); + $lastModified = isset($content->LastModified) ? strval($content->LastModified) : ""; + $eTag = isset($content->ETag) ? strval($content->ETag) : ""; + $type = isset($content->Type) ? strval($content->Type) : ""; + $size = isset($content->Size) ? intval($content->Size) : 0; + $storageClass = isset($content->StorageClass) ? strval($content->StorageClass) : ""; + $retList[] = new ObjectInfo($key, $lastModified, $eTag, $type, $size, $storageClass); + } + } + return $retList; + } + + private function parsePrefixList($xml, $encodingType) + { + $retList = array(); + if (isset($xml->CommonPrefixes)) { + foreach ($xml->CommonPrefixes as $commonPrefix) { + $prefix = isset($commonPrefix->Prefix) ? strval($commonPrefix->Prefix) : ""; + $prefix = OssUtil::decodeKey($prefix, $encodingType); + $retList[] = new PrefixInfo($prefix); + } + } + return $retList; + } +} \ No newline at end of file diff --git a/resources/org/OSS/Result/ListPartsResult.php b/resources/org/OSS/Result/ListPartsResult.php new file mode 100644 index 0000000..fd8a1b8 --- /dev/null +++ b/resources/org/OSS/Result/ListPartsResult.php @@ -0,0 +1,42 @@ +rawResponse->body; + $xml = simplexml_load_string($content); + $bucket = isset($xml->Bucket) ? strval($xml->Bucket) : ""; + $key = isset($xml->Key) ? strval($xml->Key) : ""; + $uploadId = isset($xml->UploadId) ? strval($xml->UploadId) : ""; + $nextPartNumberMarker = isset($xml->NextPartNumberMarker) ? intval($xml->NextPartNumberMarker) : ""; + $maxParts = isset($xml->MaxParts) ? intval($xml->MaxParts) : ""; + $isTruncated = isset($xml->IsTruncated) ? strval($xml->IsTruncated) : ""; + $partList = array(); + if (isset($xml->Part)) { + foreach ($xml->Part as $part) { + $partNumber = isset($part->PartNumber) ? intval($part->PartNumber) : ""; + $lastModified = isset($part->LastModified) ? strval($part->LastModified) : ""; + $eTag = isset($part->ETag) ? strval($part->ETag) : ""; + $size = isset($part->Size) ? intval($part->Size) : ""; + $partList[] = new PartInfo($partNumber, $lastModified, $eTag, $size); + } + } + return new ListPartsInfo($bucket, $key, $uploadId, $nextPartNumberMarker, $maxParts, $isTruncated, $partList); + } +} \ No newline at end of file diff --git a/resources/org/OSS/Result/PutLiveChannelResult.php b/resources/org/OSS/Result/PutLiveChannelResult.php new file mode 100644 index 0000000..dcac86b --- /dev/null +++ b/resources/org/OSS/Result/PutLiveChannelResult.php @@ -0,0 +1,16 @@ +rawResponse->body; + $channel = new LiveChannelInfo(); + $channel->parseFromXml($content); + return $channel; + } +} diff --git a/resources/org/OSS/Result/PutSetDeleteResult.php b/resources/org/OSS/Result/PutSetDeleteResult.php new file mode 100644 index 0000000..97af003 --- /dev/null +++ b/resources/org/OSS/Result/PutSetDeleteResult.php @@ -0,0 +1,20 @@ + $this->rawResponse->body); + return array_merge($this->rawResponse->header, $body); + } +} diff --git a/resources/org/OSS/Result/Result.php b/resources/org/OSS/Result/Result.php new file mode 100644 index 0000000..491256f --- /dev/null +++ b/resources/org/OSS/Result/Result.php @@ -0,0 +1,175 @@ +rawResponse = $response; + $this->parseResponse(); + } + + /** + * 获取requestId + * + * @return string + */ + public function getRequestId() + { + if (isset($this->rawResponse) && + isset($this->rawResponse->header) && + isset($this->rawResponse->header['x-oss-request-id']) + ) { + return $this->rawResponse->header['x-oss-request-id']; + } else { + return ''; + } + } + + /** + * 得到返回数据,不同的请求返回数据格式不同 + * + * $return mixed + */ + public function getData() + { + return $this->parsedData; + } + + /** + * 由子类实现,不同的请求返回数据有不同的解析逻辑,由子类实现 + * + * @return mixed + */ + abstract protected function parseDataFromResponse(); + + /** + * 操作是否成功 + * + * @return mixed + */ + public function isOK() + { + return $this->isOk; + } + + /** + * @throws OssException + */ + public function parseResponse() + { + $this->isOk = $this->isResponseOk(); + if ($this->isOk) { + $this->parsedData = $this->parseDataFromResponse(); + } else { + $httpStatus = strval($this->rawResponse->status); + $requestId = strval($this->getRequestId()); + $code = $this->retrieveErrorCode($this->rawResponse->body); + $message = $this->retrieveErrorMessage($this->rawResponse->body); + $body = $this->rawResponse->body; + + $details = array( + 'status' => $httpStatus, + 'request-id' => $requestId, + 'code' => $code, + 'message' => $message, + 'body' => $body + ); + throw new OssException($details); + } + } + + /** + * 尝试从body中获取错误Message + * + * @param $body + * @return string + */ + private function retrieveErrorMessage($body) + { + if (empty($body) || false === strpos($body, 'Message)) { + return strval($xml->Message); + } + return ''; + } + + /** + * 尝试从body中获取错误Code + * + * @param $body + * @return string + */ + private function retrieveErrorCode($body) + { + if (empty($body) || false === strpos($body, 'Code)) { + return strval($xml->Code); + } + return ''; + } + + /** + * 根据返回http状态码判断,[200-299]即认为是OK + * + * @return bool + */ + protected function isResponseOk() + { + $status = $this->rawResponse->status; + if ((int)(intval($status) / 100) == 2) { + return true; + } + return false; + } + + /** + * 返回原始的返回数据 + * + * @return ResponseCore + */ + public function getRawResponse() + { + return $this->rawResponse; + } + + /** + * 标示请求是否成功 + */ + protected $isOk = false; + /** + * 由子类解析过的数据 + */ + protected $parsedData = null; + /** + * 存放auth函数返回的原始Response + * + * @var ResponseCore + */ + protected $rawResponse; +} \ No newline at end of file diff --git a/resources/org/OSS/Result/SymlinkResult.php b/resources/org/OSS/Result/SymlinkResult.php new file mode 100644 index 0000000..9c6d861 --- /dev/null +++ b/resources/org/OSS/Result/SymlinkResult.php @@ -0,0 +1,24 @@ +rawResponse->header[OssClient::OSS_SYMLINK_TARGET] = rawurldecode($this->rawResponse->header[OssClient::OSS_SYMLINK_TARGET]); + return $this->rawResponse->header; + } +} + diff --git a/resources/org/OSS/Result/UploadPartResult.php b/resources/org/OSS/Result/UploadPartResult.php new file mode 100644 index 0000000..c6b66d4 --- /dev/null +++ b/resources/org/OSS/Result/UploadPartResult.php @@ -0,0 +1,28 @@ +rawResponse->header; + if (isset($header["etag"])) { + return $header["etag"]; + } + throw new OssException("cannot get ETag"); + + } +} \ No newline at end of file diff --git a/resources/views/weixin/feedback/userFeedbackAdd.blade.php b/resources/views/weixin/feedback/userFeedbackAdd.blade.php index 36cdb06..20ed929 100644 --- a/resources/views/weixin/feedback/userFeedbackAdd.blade.php +++ b/resources/views/weixin/feedback/userFeedbackAdd.blade.php @@ -111,8 +111,8 @@ function dosubmit() ,time: 2 //2秒后自动关闭 }); - var url = "http://www.baidu.com"; - location.href = url; + //var url = "http://www.baidu.com"; + //location.href = url; } },'json'); } diff --git a/routes/web.php b/routes/web.php index caa9529..899bd10 100644 --- a/routes/web.php +++ b/routes/web.php @@ -176,7 +176,6 @@ Route::group(['prefix' => 'dataapi', 'namespace' => 'Api', 'middleware' => ['web Route::post('/user_info_update', 'UserController@userUpdate'); //修改用户信息 Route::post('/user_password_update', 'UserController@userPasswordUpdate'); //修改用户密码、支付密码 Route::get('/user_list', 'UserController@userList'); //用户列表 - Route::post('/user_money_update', 'UserController@userMoneyUpdate'); //修改用户余额 //用户充值 Route::post('/user_recharge_add', 'UserRechargeController@userRechargeAdd'); Route::get('/user_recharge_detail', 'UserRechargeController@userRechargeDetail');