2018-10-15 17:00:19 2451次浏览 2条回答 3 悬赏 100 金钱

求个思路
需求:我给用户发送一个链接,当用户点击之后链接失效,
重点需求:如果用户不点击,则3分钟再次发送,五分钟再次发送,7分钟再次发送
还是不点击,那么则发送给客服。
如何做这个功能

最佳答案

  • python 发布于 2018-10-15 17:49 举报
    <?php
    
    
    function main() {
        Yii::$app->queue->push(new SendLinkJob([
            'link' => 'https://baidu.com',
            'startAt' => time(),
            'times' => 1,
        ]));
    }
    
    
    class SendLinkJob extends BaseObject implements \yii\queue\JobInterface {
    
        public $link;
        public $startAt;
        public $times;
    
        public function execute($queue)
        {
            if (! $this->isLinkValid()) {
                return false;
            }
            if (4 == $this->times) {
                return $this->sendToService();
            }
            
            $this->sendLink();
            Yii::$app->queue->delay($this->getDelay())->push(new SendLinkJob([
                'link'    => $this->link,
                'startAt' => $this->startAt,
                'times'   => ++$this->times,
            ]));
        }
    
        public function isLinkValid()
        {
            // ...
            return true;
        }
    
        public function sendLink()
        {
            // 发链接到客服端
        }
    
        public function sendToService()
        {
            // 发到客服
        }
    
        protected function getDelay()
        {
            switch ($this->times) {
                case 1 :
                return 180; /* 三分钟 */
                case 2 :
                return 120; /* 两分钟 */
                case 3 :
                return 120; // 两分钟
            }
        }
    }
    
    4 条回复
    回复于 2018-10-15 19:19 回复

    谢了,兄弟

    回复于 2018-10-16 18:51 回复

    收藏了

    回复于 2018-10-21 20:14 回复

    厉害了我的姐~~~

    回复于 2019-12-19 18:38 回复

    具体流程是这样的吗1.在execute里边添加任务2.需要新增一个方法,例如上边的main方法,推送任务到队列里边吗3.在cmd下边直接执行main方法吗

  • 回答于 2018-10-15 17:39 举报

    记录一个状态 当第一次给用户发送链接后 存储发送时间 和一个状态字段,需要一个cron任务 时时查询这个表中的记录状态,获取返送的时间和当前时间对比 如何大于7分钟 给客服发消息 修改状态 如果大于5分钟发送客户,如果大于3分钟发送客户,如果客户点击链接 修改状态 任务跳过记录

    1 条回复
    回复于 2018-10-15 19:21 回复

    谢了,虽然第一个回答我了,但那位仁兄更为详细直接上代码了

您需要登录后才可以回答。登录 | 立即注册
郝立国
总监

郝立国

注册时间:2017-02-09
最后登录:2024-01-11
在线时长:77小时3分
  • 粉丝6
  • 金钱2925
  • 威望110
  • 积分4795

热门问题