联系官方销售客服

1835022288

028-61286886

POSCMS 版主:POSCMS负责人
阅读收费的后台处理
类型:POSCMS 更新时间:2017-07-19 10:24:40

自定义字段的阅读收费,系统默认是购买一次之后记录购买状态,下次访问不再收费。

我这里想改成每次访问都需要收费,找出了购买的处理代码在diy/branch/fdb/D_module中,数据表是‘当前模块’_buy,我增加了一个字段叫readtime,然后实现了购买之后字段+1,阅读之后字段-1;

问题1:但是开始的if判断不知道该怎么写,或者说是不知道如何获得数据表里面的readtime字段

问题2:readtime字段更改的时候,数据表所有的记录都变更了,如何指定当前的uid与当前文章update  readtime这个字段?


        if (!$data['is_buy']                                                //积分购买的时候,判断如果没有购买记录则判断登录、检查积分
            && $this->input->get('action') == 'confirm') {
            // 会员未登录
            !$this->member && $this->msg(fc_lang('会话超时,请重新登录'));
            // 积分检查
            -$data['score'] + $this->member['score'] < 0 && $this->msg(fc_lang(SITE_SCORE.'不足!本次需要%s'.SITE_SCORE.',当前余额%s'.SITE_SCORE, $data['score'], $this->member['score']));
            // 扣减积分
            $this->member_model->update_score(1, $this->uid, -$data['score'], '', '购买《'.($data['name'] ? $data['name'] : $data['title']).'》');
            // 记录购买历史
            $insert = array(                        //生成数据数组
                'uid' => $this->uid,
                'url' => $data['url'],
                'score' => $data['score'],
                'readtime' => $data['readtime']+1,
                'thumb' => $data['preview'] ? $data['preview'] : ($data['thumb'] ? $data['thumb'] : ''),
                'inputtime' => SYS_TIME
            );
            if ($id) {
                $insert['cid'] = $id;
                $insert['title'] = $data['title'];
            } else {
                $insert['eid'] = $eid;
                $insert['cid'] = $data['cid'];
                $insert['title'] = ($data['ctitle'] ? $data['ctitle'].' - ' : '').$data['name'];
            }
            $this->db->insert($table, $insert);                                //这里记录购买情况,需要增加一个次数字段
            $this->msg(fc_lang('购买成功'), $data['url'], 1);
        } else {    
            /////////////////////////////////阅读之后减去可用次数////////////////////////////////
            $update = array(
                'uid' => $this->uid,
                'url' => $data['url'],
                'score' => $data['score'],
                'readtime' => 0,
                'thumb' => $data['preview'] ? $data['preview'] : ($data['thumb'] ? $data['thumb'] : ''),
                'inputtime' => SYS_TIME
            );
            if ($id) {
                $update['cid'] = $id;
                $update['title'] = $data['title'];
            } else {
                $update['eid'] = $eid;
                $update['cid'] = $data['cid'];
                $update['title'] = ($data['ctitle'] ? $data['ctitle'].' - ' : '').$data['name'];
            }
            $this->db->update($table, $update);                                //这里记录购买情况,需要增加一个次数字段
            ///////////////////////////////////////减去可读次数/////////////////////////////////////
            $this->template->assign($data);
            ob_start();
            $this->template->display($tpl);
            $html = ob_get_contents();
            ob_clean();
            echo $this->input->get('callback', TRUE).'('.json_encode(array('html' => $html)).')';exit;
        }
    }



回帖
  • 陈涛
    #1楼    陈涛
    2017-07-18 15:38:57
    0
    每次访问都需要收费,当我付费成功之后,万一不小心关闭了页面,再打开的时候又要交钱,岂不是很坑。。。。
  • 苏先生
    #2楼    苏先生
    2017-07-18 16:36:57
    0
    存在即为合理,你觉得坑只是你没想到什么情况下用得到。我现在有现实需求,需要的是解决方案,不是无关紧要的评价。
    【陈涛】1楼
  • 赵绫
    #3楼    赵绫
    2017-07-18 17:03:13
    0
    在// 判断是否开启阅读收费这句话的上面加上下面的代码:
    $buy_name = 'buy_time'.$name;
    $buy_time = $this->get_cache_data($buy_name);
    if (!$buy_time) {
        $buy_time = SYS_TIME;
    }
    $buy_etime = 60; // 表示刷新周期,单位秒,60秒内有效,过期需要再次购买
    if (SYS_TIME - $buy_time > $buy_etime) {
        $buy_time = SYS_TIME;
    }
    $where.= ' and inputtime='.$buy_time;
    // 判断是否开启阅读收费
    if ($data[$fees]) { .... 这里是官方原版



    购买成功之加上

    $this->set_cache_data($buy_name, $buy_time, $buy_etime); // 新加上这句
    $this->msg(fc_lang('购买成功'), $data['url'], 1);.... 这里是官方原版
    满意答案
  • 苏先生
    #4楼    苏先生
    2017-07-19 10:24:40
    0
    感谢大家给我解决此问题,我已经完美的解决