业务经理

微信扫描以上二维码

028-61286886

技术咨询

怎么判断用户已经购买商品

迅睿框架 更新 2021-01-18 16:37:24 575672988

PHP程序里面

大佬们帮忙看看怎么判断用户已经购买商品???

代码是参考积分购物这个插件,把buy.php直接挪到内容模块下面。

然后在内容模块新建price作为支付字段,复制了一份积分购物的购买记录表重命名作为记录商品购买的记录表

现在想要在内容模块的内容页面获取用户是否支付然后返回不同的内容,大佬帮忙看看该如何写下判断?

{if ?????????????????????????????}
购买展示的内容
{else}
<a href="{dr_url(MOD_DIR.'/buy/index')}&id={$id}">请购买后再查看</a>
{/if}


数据表

{xunruicms_img_title}

buy.php代码

<?php namespace Phpcmf\Controllers;

class Buy extends \Phpcmf\Common {


    public function index() {

        $this->_module_init(APP_DIR);

        $id = (int)\Phpcmf\Service::L('Input')->get('id');
        (!$id) && exit($this->_msg(0, dr_lang('商品ID不能为空')));

        !$this->uid && exit($this->_msg(0, '你还没有登录'));

        $data = $this->content_model->get_row( $id);
        !$data && $this->_msg(0, dr_lang('内容【id#%s】不存在',  $id));
        !isset($data['price']) && $this->_msg(0, dr_lang('此模块没有找到price字段'));

        $data['price_sku'] = dr_string2array($data['price_sku']);
        if ($data['price_sku']) {
            $price = [];
            foreach ($data['price_sku'] as $gid => $v) {
                if (in_array($gid, $this->member['groupid'])) {
                    $price[] = $v;
                }
            }
            !$price && $this->_msg(0, dr_lang('当前用户组无权限购买'));
            $score = intval(min($price));
        } else {
            $score = intval($data['price']);
        }

        if ($score > 0) {
            // 扣积分
            if ((float)$this->member['score'] <= 0 ) {
                $this->_msg(0, dr_lang('账户余额不足'));
            } elseif ($this->member['score'] - $score < 0) {
                $this->_msg(0, dr_lang('账户可用余额不足'));
            }

            // 扣款
            \Phpcmf\Service::M('member')->add_score($this->uid, -$score, '积分购物消费<'.$data['title'].'>');

            // 打款到作者
            \Phpcmf\Service::M('member')->add_score($data['uid'], $score, '积分购物收入<'.$data['title'].'>');

            // 记录到日志表
            \Phpcmf\Service::M()->table(SITE_ID.'_'.APP_DIR.'_score')->insert([
                'cid' => $id,
                'uid' => $this->uid,
                'sellid' => $data['uid'],
                'price' => $score,
                'inputtime' => SYS_TIME,
            ]);

            $this->_msg(1, dr_lang('支付成功'), dr_url_prefix($data['url'], APP_DIR, SITE_ID));

        } else {

            $this->_msg(0, dr_lang('当前商品为免费商品,不需要购买'));
        }



    }
    
}




方案

  • 疾风 #1 · 2021-01-18 16:32:05
    满意答案
    你的代码是入库了一张表,判断这张表是否有记录就可以实现吧?、
    {if $member.uid && \Phpcmf\Service::M()->table(SITE_ID.'_'.APP_DIR.'_score')->where('uid', $member.uid)->where('cid', $id)->counts()}
    试试这个代码
  • 575672988 #2 · 2021-01-18 16:37:09
    疾风 非常好的代码 你真的是太帅了!
  • 575672988 #3 · 2021-01-18 16:37:24
    @疾风:非常感谢!!!!!!!

迅睿系统漏洞

独立站群系统
独立站群系统(2026-09-14)
子站独立部署时修复同步附件失败问题
在线客服
在线客服(2026-09-13)
修复删除会话报错问题 删除会话时联动删除聊天图片
在线考试竞赛系统
在线考试竞赛系统(2026-09-12)
增加投票功能 考试功能拓展 注意:更新后需要执行系统更新,更新数...
网上信箱
网上信箱(2026-09-12)
修复新版本兼容问题
GeoSeo收录宝
GeoSeo收录宝(2026-09-12)
1 优化Update.php文件,解决版本在线升级不完整问题 2 ...
GeoSeo工具箱
GeoSeo工具箱(2026-09-11)
修正历史记录推送
微信系统
微信系统(2026-09-11)
增加数据统计总览界面 账号管理增加服务和公众号的区别 菜单管理支持更...
答题系统
答题系统(2026-09-11)
一站式在线答题系统,支持真题考试、题库练习和错题本,适合培训、考证、...
阿里云滑动验证码
阿里云滑动验证码(2026-09-10)
采用阿里云验证码替换迅睿系统自带的图片验证码和滑动验证码。后台设置方...
下载Plus
下载Plus(2026-09-09)
为网站附件下载加上“计数、限次、统计、防护”四重能力:按用户组控制下...