刷手接取任务


上一篇 : 图片上传 下一篇: 提交审核



上一篇说的创建发布任务实际是没有支付的。支付这一块后面再说,这里假设他已经支付了


1 创建数据库

CREATE TABLE `up61_apply_task` (

  `id` bigint(20) NOT NULL AUTO_INCREMENT,

  `task_id` bigint(20) NOT NULL COMMENT '任务id',

  `user_id` bigint(20) NOT NULL COMMENT '接单人id',

  `create_time` datetime NOT NULL COMMENT '接单时间',

  `status` tinyint(1) NOT NULL COMMENT '状态 0 已接单 1 第一次提交审核 2 第二次提交审核 3第一次审核失败 4 第二次审核失败 5 第一次审核成功 6第二次审核成功',

  `update_time` datetime NOT NULL COMMENT '修改时间',

  `is_cancel` tinyint(1) NOT NULL COMMENT '0 正常 1已取消 任务',

  PRIMARY KEY (`id`),

  KEY `task_id` (`task_id`),

  KEY `user_id` (`user_id`)

) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4;



2 新增接口

task控制中新增

use app\index\model\ApplyTask as ApplyTaskModel;
//刷手接单
public function applyTask(){
   $user_id = $this->getUserId();
   $validate = new Validate([
       'task_id' => 'require|integer'
   ]);
   $validate->message([
       'task_id.require' => '请选择任务!',
       'task_id.integer' => '无效参数!',
   ]);

   $data = $this->request->param();
   if (!$validate->check($data)) {
       $this->error($validate->getError());
   }
   $task_id = $data['task_id'];

   $taskModel = TaskModel::get($task_id);
   if(empty($taskModel)){
       $this->error('任务不存在!');
   }
   if(!$taskModel->pay_status){
       $this->error('该任务还未支付,不能领取!');
   }
   if(!$taskModel->last_num){
       $this->error('任务已抢完,看看别的吧!');
   }

   $data['user_id'] = $user_id;

   //同一单 每个刷手只能接一次

   $applyTaskModel = new ApplyTaskModel();

   $applyCount = $applyTaskModel
       ->where('task_id',$task_id)
       ->where('user_id',$user_id)
       ->where('status',0)
       ->count();
   if($applyCount){
       $this->error('您已领取过任务,机会留给别人吧!');
   }

   $applyTaskModel->applyTask($data);

   $taskModel->last_num = $taskModel->last_num -1;
   $taskModel->isUpdate(true)->save();

   $this->success('接单成功');


}

3 修改task模型类


增加 

protected $updateTime = false;


4 新增ApplyTask模型类

<?php
/**
* Created by PhpStorm.
* User: [一秋]
* Date: 2018/3/29
* Time: 11:55
* Desc: 成功源于点滴
*/

namespace app\index\model;


use think\Model;

class ApplyTask extends Model
{
   protected $autoWriteTimestamp = 'datetime';
   public function applyTask($data){

       $data['status'] = 0;
       $this->allowField(true)->isUpdate(false)->save($data);
       return $this;
   }
}

4 新增路由

//刷手接取任务
Route::post('task/apply','index/Task/applyTask');


上一篇 : 图片上传 下一篇: 提交审核