sspanel v3魔改版添加功能之——限售(库存为0自动下架)

介绍一个好玩的功能,模拟实体商品库存限制,比如一个套餐卖了10个后,套餐库存不足自动下架。此限量售卖功能较好的适用于特价商品限量售卖的场景中。

本篇为教程,非现成源码,需要一定的耐心,我可能会讲的比较啰嗦。

sspanel版本:Anankke,其他版本可能不适用。

前提:修改文件前务必先备份!

要求:有一定的html/php基础,会折腾。

初级

打开网站跟目录下的文件:app/Controllers/UserController.php,搜索并找到如下代码:

public function buy($request, $response, $args)

懂php的同学应该知道,上面代码为定义了一个名为:buy的函数,此函数实现了sspanel套餐的购买功能,因此我们要实现的限量售卖功能,也要从这里着手。我们在上面的代码往下找几行,就能发现这行代码:

$shop = Shop::where('id', $shop)->where('status', 1)->first();

我们在这行代码下添加代码。此代码表示正在购买的商品的剩余库存数量。

$stock = $shop->stock;

添加后看下图:

sspanel v3魔改版添加功能之——限售(库存为0自动下架)-懵比小站

获取到商品的库存数量后,我们就可以实现当任一用户成功购买一次商品后,减少一个该商品的库存数量。

$shop->stock = $stock - 1;
$shop->save();

当库存数量为0表示商品已售完,我们要下架该商品。status字段为0即表示下架。

$shop->status = 0;
$shop->stock = 0;
$shop->save();

我们不一定所有商品都需要限量,我们可以规定库存数量为负数(小于0)即为不限量。对于不限量商品,我们无需操作。

现在我们在buy函数体内找到如下代码。如果找不到,可以使用快捷键:Ctrl+F进行文本查找。

$shop->buy($user);

此代码表示用户成功购买了商品,接下来我们实现商品库存数量减一,如果库存数量为0就下架,不限量就不操作。再上述代码下添加如下代码。

switch (true) {
    case $stock - 1 > 0:
        $shop->stock = $stock - 1;
        $shop->save();
        break;
    case $stock - 1 == 0:
        $shop->status = 0;
        $shop->stock = 0;
        $shop->save(); 
        break;
    default:
        break;
}

到此我们完成了限量套餐的所有核心功能。我们现在前往数据库,一般搭建sspanel都用的是宝塔,我们在对应的数据库后面点击“管理”,就进入了网页版的数据库管理界面。进入之前确保你已经安装了phpmyadmin并处于开启状态。我们点击进入shop数据表,点击上方的“结构”,点击下方的“执行”。

sspanel v3魔改版添加功能之——限售(库存为0自动下架)-懵比小站

添加一个stock字段,默认值为:-1,也就是默认商品都是无限量。按照下图填写即可。不要忘了保存。

sspanel v3魔改版添加功能之——限售(库存为0自动下架)-懵比小站

所有步骤全都完成,现在来测试一下。我们点击上方的“浏览”,修改想要限量的商品的stock值为1(双击进入编辑状态,点击空白保存),表示库存只有一件,卖完就下架。然后回到sspanel网站,该买此限量商品,购买完成后查看此商品是否还在。如果商品不在就表示成功,如果商品还在请从头检查哪一个步骤出错并纠正。

中级

初级实现了限量售卖的功能,但是会涉及到直接对数据库的操作,不安全也不太方便。在初级的基础上,我们实现在sspanel后台控制商品的库存数量。

在网站根目录下找目录:/resources/views/material/admin/shop,在这个目录下打开create.tpl文件,定位到73行并添加如下代码并保存:

<div class="card">
    <div class="card-main">
        <div class="card-inner">
            <div class="form-group form-group-label">
                 <label class="floating-label" for="stock">库存数量</label>
                 <input class="form-control maxwidth-edit" id="stock" type="text" value="-1">
             </div>
             <div class="form-group form-group-label">
                 填写库存数量,小于0为不限量
             </div>
        </div>
    </div>
</div>

然后搜索如下代码:

content_extra: contentExtra

紧挨这段代码下另起一行,填写如下代码。

stock: $$getValue('stock')

在同目录下打开edit.tpl文件,定位到78行并添加上述相同的代码并保存。

<div class="card">
  <div class="card-main">
    <div class="card-inner">

      <div class="form-group form-group-label">
        <label class="floating-label" for="stock">库存数量</label>
        <input class="form-control maxwidth-edit" id="stock" type="text" value="{$shop->stock}">
      </div>

      <div class="form-group form-group-label">
        填写库存数量,小于0为不限量 
      </div>
    </div>
  </div>
</div>

然后搜索如下代码:

content_extra: contentExtra

紧挨这段代码下另起一行,填写如下代码。

stock: $$getValue('stock')

在网站根目录下找到文件:/app/Controllers/Admin/ShopController.php,定位到40行并添加代码:

$shop->stock = $request->getParam('stock');

定位到110行并添加同样的代码:

$shop->stock = $request->getParam('stock');

最后效果为下图。编辑商品可以修改库存数量,无需再去数据库修改。

sspanel v3魔改版添加功能之——限售(库存为0自动下架)-懵比小站

高级

没有高级了,中级后就可以正式使用,没其他问题。这里再修复一下初级里的一个小bug,当你手动修改商品库存为0,而没有手动下架此商品,则此商品变为了一个不限量商品。修复如下:

在根目录下打开文件:app/Controllers/UserController.php,搜索代码:

$stock = $shop->stock;

在这段代码下方我们添加如下代码:

if($stock == 0)
{
    $shop->status = 0;
    $shop->stock = 0;
    $shop->save();
    $res['ret'] = 0;
    $res['msg'] = '对不起,此商品库存不足';
    return $response->getBody()->write(json_encode($res));
}

具体截图如下:

sspanel v3魔改版添加功能之——限售(库存为0自动下架)-懵比小站

借助此功能,当手动修改库存为0时,意味着你将要下架该商品。商品不会立马下架,只要有用户该买此商品,会得到“对不起,此商品库存不足”的提示并购买失败,之后商品将从商品列表里消失。

说明

1、应用场景:对优惠套餐实现“秒杀”,增加用户抢购欲望。

2、如有遗漏、错误之处,请不吝赐教,你的建议能够帮助学者少走弯路,感谢!

本文系作者 @ 原创发布在 懵比小站。未经许可,禁止转载。

喜欢()
评论 (4)
    • @aolai: 不知道什么原因,你初级要是没有问题的话,中级应该不会有太大的错误,因为中级只是在前端代码层面修改。

      回复
  • Felix

    博主,请教您个问题。现在因为众所周知的原因,只剩v2ray能用。那么该怎样能把sspanel用户中心快速添加节点只留下V2ray呢?

    回复
    • @Felix: 网站前端可以修改这个文件:resources/views/materials/user/index.tpl,不过你把节点设置成v2ray了,就只有v2ray了吧?

      回复
热门搜索
homeagain
分享互联网最新资讯,分布各类教程:苹果cms、vps推荐、宝塔建站知识、edu邮箱、wordpress模板下载……只有你想不到,没有出不了的教程。
233 文章
162 评论
63 喜欢
Top