汪总电商平台
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

178 lines
4.9 KiB

<?php
namespace app\api\controller\wanlshop;
use app\common\controller\Api;
/**
* WanlShop购物车接口
*/
class Cart extends Api
{
protected $noNeedLogin = [];
protected $noNeedRight = ['*'];
public function _initialize()
{
parent::_initialize();
$this->model = new \app\api\model\wanlshop\Cart;
}
/**
* 获取或合并购物车
*
* @ApiSummary (WanlShop 购物车接口获取或合并购物车)
* @ApiMethod (POST)
*
* @param string $cart 本地购物车数据
*/
public function synchro()
{
//设置过滤方法
$this->request->filter(['strip_tags']);
if ($this->request->isPost()) {
$post = $this->request->post();
$user_id = $this->auth->id;
// 如果存在合并购物车,返回;否则获取购物车
if($post['cart']){
$newlist = [];
foreach($post['cart'] as $row){
// 1.1.2升级 排除失效商品
if(model('app\api\model\wanlshop\Goods')->get($row['goods_id'])){
$where = [
'goods_id' => $row['goods_id'],
'shop_id' => $row['shop_id'],
'sku_id' => $row['sku_id'],
'user_id' => $user_id
];
$cart = $this->model->where($where)->find();
if(!$cart){
// 局部写入 1.0.2升级
$where['number'] = $row['number'];
$newlist[] = $where;
}
}
}
if(count($newlist) > 0){
$this->model->saveAll($newlist, false);
}
}
// 查询购物车最新商品详情 1.1.9升级
$list = [];
foreach ($this->model->where('user_id', $user_id)->select() as $row) {
$sku = model('app\api\model\wanlshop\GoodsSku')
->where('id', 'eq', $row->sku_id)
->where('state','eq', '0')
->find();
// 查询是否还有库存
if($sku['stock'] > 0){
if($row->goods){
$list[] = [
'shop_id' => $row->shop->id,
'shop_name' => $row->shop->shopname,
'goods_id' => $row->goods->id,
'title' => $row->goods->title,
'image' => $row->goods->image,
'number' => $row->number,
'sku_id' => $row->sku_id,
'sku' => $sku,
'sum' => bcmul($sku->price, $row->number, 2),
'checked' => false
];
}
}
}
$this->success('返回成功', $list);
}
$this->error(__('非正常请求'));
}
/**
* 操作购物车数据库
*
* @ApiSummary (WanlShop 购物车接口操作购物车数据库)
* @ApiMethod (POST)
*
* @param string $type 操作方式
* @param string $data 改变数据
*/
public function storage()
{
//设置过滤方法
$this->request->filter(['strip_tags']);
if ($this->request->isPost()) {
$post = $this->request->post();
$user_id = $this->auth->id;
$return = '';
// 清空购物车
if($post['type'] == 'empty'){
$this->model->where(['user_id' => $this->auth->id])->delete();
// 新增购物车
}else if($post['type'] == 'add'){
$row = $post['data'];
$where = [
'goods_id' => $row['goods_id'],
'shop_id' => $row['shop_id'],
'sku_id' => $row['sku_id'],
'user_id' => $user_id
];
// 查询是否已存在,如果已存在只改变数量和总价
$cart = $this->model->where($where)->find();
if($cart){
$number = $cart['number'] + $row['number'];
$params = [
'number' => $number,
//1.0.5升级 'sum' => bcmul($cart['sku']['price'], $number)
];
$cart->save($params);
}else{
// 只新增ID,1.0.2升级
$where['number'] = $row['number'];
$this->model->save($where, false);
}
// 新增购物车
}else if($post['type'] == 'bcsub' || $post['type'] == 'bcadd'){
$where = [
'goods_id' => $post['goods_id'],
'sku_id' => $post['sku_id'],
'user_id' => $user_id
];
$cart = $this->model->where($where)->find();
// 1.0.5升级
$cart->save(['number' => $post['number']]);
// 批量删除
}else if($post['type'] == 'del'){
foreach ($post['data'] as $row) {
$where = [
'goods_id' => $row['goods_id'],
'sku_id' => $row['sku_id'],
'user_id' => $user_id
];
$this->model->where($where)->delete();
}
// 先将传来的批量写进关注表,在删除这些
}else if($post['type'] == 'follow'){
$follow = [];
foreach ($post['data'] as $row) {
$where = [
'goods_id' => $row['goods_id'],
'sku_id' => $row['sku_id'],
'user_id' => $user_id
];
$follow[] = [
'user_id' => $user_id,
'goods_id' => $row['goods_id']
];
$this->model->where($where)->delete();
}
$follow = array_unique($follow, SORT_REGULAR);
$return = model('app\api\model\wanlshop\GoodsFollow')->saveAll($follow, false);
$return = count($return);
}else{
$this->error(__('网络繁忙'));
}
$this->success('更新购物车完成!', $return);
}
$this->error(__('非正常请求'));
}
}