| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137 | <?phpnamespace App\Services\Common;use App\Repositories\MemberHandselRepository;use App\Repositories\MemberPointRepository;use App\Repositories\TaskLogRepository;use App\Repositories\TaskRepository;use Illuminate\Support\Facades\DB;class TaskService{    /**     * @var TaskRepository     */    protected $TaskRepository;    protected $TaskLogRepository;    protected $MemberPointRepository;    protected $MemberHandselRepository;    /**     * TaskService constructor.     * @param TaskRepository $TaskRepository     * @param TaskLogRepository $TaskLogRepository     * @param MemberPointRepository $MemberPointRepository     * @param MemberHandselRepository $MemberHandselRepository     */    public function __construct(TaskRepository $TaskRepository, TaskLogRepository $TaskLogRepository, MemberPointRepository $MemberPointRepository, MemberHandselRepository $MemberHandselRepository)    {        $this->TaskRepository = $TaskRepository;        $this->TaskLogRepository = $TaskLogRepository;        $this->MemberPointRepository = $MemberPointRepository;        $this->MemberHandselRepository = $MemberHandselRepository;    }    public function doTask($id, $uid = 0, $utype = 0)    {        $task = $this->TaskRepository->getTaskById($id);        if (!$task) {            return ['code'=>0,'info'=>'没有找到对应的任务','data'=>null];        }        if (!$uid) {            if (auth('web-member')->user()) {                $uid = auth('web-member')->user()->id;                $utype = auth('web-member')->user()->utype;            }            if (auth('web-company')->user()) {                $uid = auth('web-company')->user()->id;                $utype= auth('web-company')->user()->utype;            }        }        if ($task->once==1) {            //查询是否完成过该任务--单次任务            $log = $this->TaskLogRepository->getTaskLog($uid, $task, $utype);            if (!$log) {                return $this->addTask($task, $uid, $utype);            } else {                return ['code'=>0,'info'=>'已经完成过这个任务了','data'=>null];            }        } else {            //查询今天完成过该任务的次数--日常任务。            $taskLog = $this->TaskLogRepository->getTaskLogCount($uid, $task->id, $utype);            if ($taskLog<$task->times || $task->times==-1) {                return $this->addTask($task, $uid, $utype);            } else {                return ['code'=>0,'info'=>'完成任务超出限额','data'=>null];            }        }    }    private function addTask($task, $uid, $utype)    {        DB::beginTransaction();        $p2 = intval($task->points);        try {            $taskLog = $this->TaskLogRepository->addNew(['uid'=>$uid,'task_id'=>$task->id,'utype'=>$utype,'points'=>$task->points,'once'=>$task->once]);            if (!$taskLog) {                throw new \Exception('操作失败--task_log');            }            $MembersPoint = $this->MemberPointRepository->getPointsOne($uid, $utype);            if ($MembersPoint) {                //更新数据。                $p1 = intval($MembersPoint->points);                $points = $p1+$p2;                $MembersP = $this->MemberPointRepository->updateNew($uid, $utype, ['points'=>$points]);            } else {                //新增数据。                $MembersP = $this->MemberPointRepository->addNew(['uid'=>$uid,'utype'=>$utype,'points'=>$task->points]);            }            if (!$MembersP) {                throw new \Exception('操作失败--members_points');            }            $MembersH = $this->MemberHandselRepository->addNew(['uid'=>$uid,'utype'=>$utype,'htype'=>$task->t_alias,'htype_cn'=>$task->title,'operate'=>1,'points'=>$task->points]);            if (!$MembersH) {                throw new \Exception('操作失败--members_handsel');            }            DB::commit();            return ['code'=>1,'info'=>'操作成功','data'=>['points'=>$p2]];        } catch (\Exception $e) {            DB::rollback();            return ['code'=>0,'info'=>$e->getMessage(),'data'=>null];        }    }    public function checkTask($id)    {        $task = $this->TaskRepository->getTaskById($id);        if ($task) {            return true;        }        return false;    }    public function doUserTask($user, $id)    {        $task = $this->TaskRepository->getTaskById($id);        if (!$task) {            return ['code'=>0,'info'=>'没有找到对应的任务','data'=>null];        }        if ($task->once) {      //一次性任务            $log = $this->TaskLogRepository->getTaskLog($user->uid, $task, $user->utype);            if (!$log) {                return $this->addTask($task, $user->uid, $user->utype);            } else {                return ['code'=>0,'info'=>'已经完成过这个任务了','data'=>null];            }        } else {    //日常任务            $taskLog = $this->TaskLogRepository->getTaskLogCount($user->uid, $task->id, $user->utype);            if ($taskLog<$task->times || $task->times==-1) {                return $this->addTask($task, $user->uid, $user->utype);            } else {                return ['code'=>0,'info'=>'完成任务超出限额','data'=>null];            }        }    }}
 |