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
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(__('非正常请求'));
|
|
}
|
|
}
|
|
|