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');