作者 郭盛
1 个管道 的构建 通过 耗费 9 秒

添加购物车

... ... @@ -2,8 +2,8 @@
<project version="4">
<component name="ChangeListManager">
<list default="true" id="e93f11c2-a7d9-4d35-8b1c-8dd18e7f5fef" name="Default" comment="">
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/application/api/controller/User.php" afterPath="$PROJECT_DIR$/application/api/controller/User.php" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/public/api.html" afterPath="$PROJECT_DIR$/public/api.html" />
</list>
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
<option name="TRACKING_ENABLED" value="true" />
... ... @@ -17,8 +17,8 @@
<file leaf-file-name="User.php" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/application/api/controller/User.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="561">
<caret line="413" column="13" lean-forward="false" selection-start-line="413" selection-start-column="13" selection-end-line="413" selection-end-column="13" />
<state relative-caret-position="115">
<caret line="746" column="7" lean-forward="true" selection-start-line="746" selection-start-column="7" selection-end-line="746" selection-end-column="7" />
<folding>
<element signature="e#38#68#0#PHP" expanded="true" />
<element signature="e#337#456#0#PHP" expanded="false" />
... ... @@ -35,6 +35,7 @@
<element signature="e#9728#10430#0#PHP" expanded="false" />
<element signature="e#10435#11635#0#PHP" expanded="false" />
<element signature="e#11641#12325#0#PHP" expanded="false" />
<element signature="e#12330#14120#0#PHP" expanded="false" />
<element signature="e#14126#14996#0#PHP" expanded="false" />
<element signature="e#15001#16814#0#PHP" expanded="false" />
<element signature="e#16820#17197#0#PHP" expanded="false" />
... ... @@ -47,6 +48,8 @@
<element signature="e#19854#20045#0#PHP" expanded="false" />
<element signature="e#20051#20409#0#PHP" expanded="false" />
<element signature="e#20414#20604#0#PHP" expanded="false" />
<element signature="e#20610#21753#0#PHP" expanded="false" />
<element signature="e#21758#23735#0#PHP" expanded="false" />
</folding>
</state>
</provider>
... ... @@ -126,10 +129,10 @@
</component>
<component name="PhpWorkspaceProjectConfiguration" backward_compatibility_performed="true" />
<component name="ProjectFrameBounds" extendedState="1">
<option name="x" value="20" />
<option name="y" value="76" />
<option name="width" value="1883" />
<option name="height" value="946" />
<option name="x" value="127" />
<option name="y" value="31" />
<option name="width" value="1614" />
<option name="height" value="977" />
</component>
<component name="ProjectView">
<navigator currentView="ProjectPane" proportions="" version="1">
... ... @@ -220,7 +223,7 @@
<workItem from="1574141466352" duration="745000" />
<workItem from="1574143209694" duration="3660000" />
<workItem from="1574146994475" duration="23222000" />
<workItem from="1574209189943" duration="15167000" />
<workItem from="1574209189943" duration="21191000" />
</task>
<task id="LOCAL-00001" summary="调试">
<created>1574145133364</created>
... ... @@ -233,7 +236,7 @@
<servers />
</component>
<component name="TimeTrackingManager">
<option name="totallyTimeSpent" value="86742000" />
<option name="totallyTimeSpent" value="92766000" />
</component>
<component name="TodoView">
<todo-panel id="selected-file">
... ... @@ -245,17 +248,16 @@
</todo-panel>
</component>
<component name="ToolWindowManager">
<frame x="20" y="76" width="1883" height="946" extended-state="1" />
<editor active="true" />
<frame x="127" y="31" width="1614" height="977" extended-state="1" />
<layout>
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.15743281" sideWeight="0.5" order="1" side_tool="false" content_ui="combo" />
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.15743281" sideWeight="0.5" order="1" side_tool="false" content_ui="combo" />
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32912987" sideWeight="0.5" order="9" side_tool="false" content_ui="tabs" />
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="true" content_ui="tabs" />
<window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.38442522" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Terminal" active="true" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.3809524" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="true" content_ui="tabs" />
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
<window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
... ... @@ -677,8 +679,8 @@
</entry>
<entry file="file://$PROJECT_DIR$/application/api/controller/User.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="561">
<caret line="413" column="13" lean-forward="false" selection-start-line="413" selection-start-column="13" selection-end-line="413" selection-end-column="13" />
<state relative-caret-position="115">
<caret line="746" column="7" lean-forward="true" selection-start-line="746" selection-start-column="7" selection-end-line="746" selection-end-column="7" />
<folding>
<element signature="e#38#68#0#PHP" expanded="true" />
<element signature="e#337#456#0#PHP" expanded="false" />
... ... @@ -695,6 +697,7 @@
<element signature="e#9728#10430#0#PHP" expanded="false" />
<element signature="e#10435#11635#0#PHP" expanded="false" />
<element signature="e#11641#12325#0#PHP" expanded="false" />
<element signature="e#12330#14120#0#PHP" expanded="false" />
<element signature="e#14126#14996#0#PHP" expanded="false" />
<element signature="e#15001#16814#0#PHP" expanded="false" />
<element signature="e#16820#17197#0#PHP" expanded="false" />
... ... @@ -707,6 +710,8 @@
<element signature="e#19854#20045#0#PHP" expanded="false" />
<element signature="e#20051#20409#0#PHP" expanded="false" />
<element signature="e#20414#20604#0#PHP" expanded="false" />
<element signature="e#20610#21753#0#PHP" expanded="false" />
<element signature="e#21758#23735#0#PHP" expanded="false" />
</folding>
</state>
</provider>
... ...
... ... @@ -641,4 +641,132 @@ class User extends Api
$this->success('SUCCESS',$data);
}
/**
* @ApiTitle (购物车列表)
* @ApiSummary (购物车列表)
* @ApiMethod (POST)
* @ApiRoute (/api/user/car)
* @ApiHeaders (name=token, type=string, required=true, description="请求的Token")
*
* @ApiReturn({
"code": 1,
"msg": "成功",
"time": "1571492001",
"data": {
"id"://购物车ID
"user_id"://用户ID
"pic_id"://图片的ID
"video_id"://视频的ID
"pic":[
"id"://图片ID
"title"://图片标题
"thumbnail"://缩略图
"url"://高清百度云盘地址
"price"://普通价格
"vip_price"://vip价格
],
"video":[
"id"://视频ID
"title"://视频标题
"thumbnail"://视频封面图片
"video"://视频地址
"two_url"://2K视频云盘地址
"four_url"://4k视频云盘地址
"eight_url"://8k视频云盘地址
"price"://2k视频原价格
"four_price"://4k视频原价格
"eight_price"://8k视频原价格
"vip_price"://2k会员价格
"four_vipprice"://4k会员价格
"eight_vipprice"://8k会员价格
]
}
})
*/
public function car()
{
$user_id = $this->uid;
//查询该用户是否为会员
$res = Db::name('user')
->where('id',$user_id)
->field('id,is_vip')
->find();
//判断
if($res['is_vip'] == 0){
//不是的情况
$data = Db::name('car')
->where('user_id',$user_id)
->field('id,user_id,pic_id,video_id')
->order('id desc')
->select();
foreach ($data as &$v){
$v['pic'] = Db::name('pic')->field('id,title,thumbnail,url,price')->whereIn('id',explode(',',$v['pic_id']))->select();
$v['video'] = Db::name('video')->field('id,title,thumbnail,video,two_url,four_url,eight_url,price,four_price,eight_price')->whereIn('id',explode(',',$v['video_id']))->select();
}
$this->success('SUCCESS',$data);
}else{
//是的情况
$data = Db::name('car')
->where('user_id',$user_id)
->field('id,user_id,pic_id,video_id')
->order('id desc')
->select();
foreach ($data as &$v){
$v['pic'] = Db::name('pic')->field('id,title,thumbnail,url,price')->whereIn('id',explode(',',$v['pic_id']))->select();
foreach ($v['pic'] as &$val){
$val['vip_price'] = $val['price']*0.75;
}
$v['video'] = Db::name('video')->field('id,title,thumbnail,video,two_url,four_url,eight_url,price,four_price,eight_price')->whereIn('id',explode(',',$v['video_id']))->select();
foreach ($v['video'] as &$v_video){
$v_video['vip_price'] = $v_video['price']*0.75;
$v_video['four_vipprice'] = $v_video['four_price']*0.75;
$v_video['eight_vipprice'] = $v_video['eight_price']*0.75;
}
}
$this->success('SUCCESS',$data);
}
}
/**
* @ApiTitle (加入购物车)
* @ApiSummary (加入购物车)
* @ApiMethod (POST)
* @ApiRoute (/api/user/addcar)
* @ApiHeaders (name=token, type=string, required=true, description="请求的Token")
*
* @ApiParams (name="pic_id", type="inter", required=false, description="图片ID")
* @ApiParams (name="video_id", type="inter", required=false, description="视频ID")
*
* @ApiReturn({
"code": 1,
"msg": "成功",
"time": "1571492001",
})
*/
public function addcar()
{
$user_id = $this->uid;
$pic_id = $this->request->param('pic_id');
$video_id = $this->request->param('video_id');
$data = Db::name('car')
->where('user_id',$user_id)
->find();
$param['pic_id'] = array_push(explode(',',$data['pic_id']),$pic_id);
$param['video_id'] = array_push(explode(',',$data['video_id']),$video_id);
$param['createtime'] = time();
$param['updatetime'] = time();
$data = Db::name('car')
->where('user_id',$user_id)
->update($param);
if($data){
$this->success('SUCCESS');
}else{
$this->error(['code'=>2,'msg'=>'sql执行失败']);
}
}
}
... ...
... ... @@ -170,6 +170,8 @@
<a href="javascript:;" data-id="17" class="list-group-item">创建充值订单</a>
<a href="javascript:;" data-id="18" class="list-group-item">会员介绍</a>
<a href="javascript:;" data-id="19" class="list-group-item">会员须知</a>
<a href="javascript:;" data-id="20" class="list-group-item">购物车列表</a>
<a href="javascript:;" data-id="21" class="list-group-item">加入购物车</a>
</div>
</div>
</div>
... ... @@ -2803,13 +2805,318 @@
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading" id="heading-20">
<h4 class="panel-title">
<span class="label label-primary">POST</span>
<a data-toggle="collapse" data-parent="#accordion20" href="#collapseOne20"> 购物车列表 <span class="text-muted">/api/user/car</span></a>
</h4>
</div>
<div id="collapseOne20" class="panel-collapse collapse">
<div class="panel-body">
<!-- Nav tabs -->
<ul class="nav nav-tabs" id="doctab20">
<li class="active"><a href="#info20" data-toggle="tab">基础信息</a></li>
<li><a href="#sandbox20" data-toggle="tab">在线测试</a></li>
<li><a href="#sample20" data-toggle="tab">返回示例</a></li>
</ul>
<!-- Tab panes -->
<div class="tab-content">
<div class="tab-pane active" id="info20">
<div class="well">
购物车列表 </div>
<div class="panel panel-default">
<div class="panel-heading"><strong>Headers</strong></div>
<div class="panel-body">
<table class="table table-hover">
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必选</th>
<th>描述</th>
</tr>
</thead>
<tbody>
<tr>
<td>token</td>
<td>string</td>
<td></td>
<td>请求的Token</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading"><strong>参数</strong></div>
<div class="panel-body">
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading"><strong>正文</strong></div>
<div class="panel-body">
</div>
</div>
</div><!-- #info -->
<div class="tab-pane" id="sandbox20">
<div class="row">
<div class="col-md-12">
<div class="panel panel-default">
<div class="panel-heading"><strong>Headers</strong></div>
<div class="panel-body">
<div class="headers">
<div class="form-group">
<label class="control-label" for="token">token</label>
<input type="string" class="form-control input-sm" id="token" required placeholder="请求的Token - Ex: " name="token">
</div>
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading"><strong>参数</strong></div>
<div class="panel-body">
<form enctype="application/x-www-form-urlencoded" role="form" action="/api/user/car" method="POST" name="form20" id="form20">
<div class="form-group">
</div>
<div class="form-group">
<button type="submit" class="btn btn-success send" rel="20">提交</button>
<button type="reset" class="btn btn-info" rel="20">重置</button>
</div>
</form>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading"><strong>响应输出</strong></div>
<div class="panel-body">
<div class="row">
<div class="col-md-12" style="overflow-x:auto">
<pre id="response_headers20"></pre>
<pre id="response20"></pre>
</div>
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading"><strong>返回参数</strong></div>
<div class="panel-body">
</div>
</div>
</div>
</div>
</div><!-- #sandbox -->
<div class="tab-pane" id="sample20">
<div class="row">
<div class="col-md-12">
<pre id="sample_response20">{
"code": 1,
"msg": "成功",
"time": "1571492001",
"data": {
"id"://购物车ID
"user_id"://用户ID
"pic_id"://图片的ID
"video_id"://视频的ID
"pic":[
"id"://图片ID
"title"://图片标题
"thumbnail"://缩略图
"url"://高清百度云盘地址
"price"://普通价格
"vip_price"://vip价格
],
"video":[
"id"://视频ID
"title"://视频标题
"thumbnail"://视频封面图片
"video"://视频地址
"two_url"://2K视频云盘地址
"four_url"://4k视频云盘地址
"eight_url"://8k视频云盘地址
"price"://2k视频原价格
"four_price"://4k视频原价格
"eight_price"://8k视频原价格
"vip_price"://2k会员价格
"four_vipprice"://4k会员价格
"eight_vipprice"://8k会员价格
]
}
}</pre>
</div>
</div>
</div><!-- #sample -->
</div><!-- .tab-content -->
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading" id="heading-21">
<h4 class="panel-title">
<span class="label label-primary">POST</span>
<a data-toggle="collapse" data-parent="#accordion21" href="#collapseOne21"> 加入购物车 <span class="text-muted">/api/user/addcar</span></a>
</h4>
</div>
<div id="collapseOne21" class="panel-collapse collapse">
<div class="panel-body">
<!-- Nav tabs -->
<ul class="nav nav-tabs" id="doctab21">
<li class="active"><a href="#info21" data-toggle="tab">基础信息</a></li>
<li><a href="#sandbox21" data-toggle="tab">在线测试</a></li>
<li><a href="#sample21" data-toggle="tab">返回示例</a></li>
</ul>
<!-- Tab panes -->
<div class="tab-content">
<div class="tab-pane active" id="info21">
<div class="well">
加入购物车 </div>
<div class="panel panel-default">
<div class="panel-heading"><strong>Headers</strong></div>
<div class="panel-body">
<table class="table table-hover">
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必选</th>
<th>描述</th>
</tr>
</thead>
<tbody>
<tr>
<td>token</td>
<td>string</td>
<td></td>
<td>请求的Token</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading"><strong>参数</strong></div>
<div class="panel-body">
<table class="table table-hover">
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必选</th>
<th>描述</th>
</tr>
</thead>
<tbody>
<tr>
<td>pic_id</td>
<td>inter</td>
<td></td>
<td>图片ID</td>
</tr>
<tr>
<td>video_id</td>
<td>inter</td>
<td></td>
<td>视频ID</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading"><strong>正文</strong></div>
<div class="panel-body">
</div>
</div>
</div><!-- #info -->
<div class="tab-pane" id="sandbox21">
<div class="row">
<div class="col-md-12">
<div class="panel panel-default">
<div class="panel-heading"><strong>Headers</strong></div>
<div class="panel-body">
<div class="headers">
<div class="form-group">
<label class="control-label" for="token">token</label>
<input type="string" class="form-control input-sm" id="token" required placeholder="请求的Token - Ex: " name="token">
</div>
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading"><strong>参数</strong></div>
<div class="panel-body">
<form enctype="application/x-www-form-urlencoded" role="form" action="/api/user/addcar" method="POST" name="form21" id="form21">
<div class="form-group">
<label class="control-label" for="pic_id">pic_id</label>
<input type="inter" class="form-control input-sm" id="pic_id" placeholder="图片ID" name="pic_id">
</div>
<div class="form-group">
<label class="control-label" for="video_id">video_id</label>
<input type="inter" class="form-control input-sm" id="video_id" placeholder="视频ID" name="video_id">
</div>
<div class="form-group">
<button type="submit" class="btn btn-success send" rel="21">提交</button>
<button type="reset" class="btn btn-info" rel="21">重置</button>
</div>
</form>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading"><strong>响应输出</strong></div>
<div class="panel-body">
<div class="row">
<div class="col-md-12" style="overflow-x:auto">
<pre id="response_headers21"></pre>
<pre id="response21"></pre>
</div>
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading"><strong>返回参数</strong></div>
<div class="panel-body">
</div>
</div>
</div>
</div>
</div><!-- #sandbox -->
<div class="tab-pane" id="sample21">
<div class="row">
<div class="col-md-12">
<pre id="sample_response21">{
"code": 1,
"msg": "成功",
"time": "1571492001",
}</pre>
</div>
</div>
</div><!-- #sample -->
</div><!-- .tab-content -->
</div>
</div>
</div>
</div>
<hr>
<div class="row mt0 footer">
<div class="col-md-6" align="left">
Generated on 2019-11-20 13:17:47 </div>
Generated on 2019-11-20 15:02:18 </div>
<div class="col-md-6" align="right">
<a href="https://www.fastadmin.net" target="_blank">FastAdmin</a>
</div>
... ...