TaskService.class.php 2.74 KB
<?php
/**
 * Created by PhpStorm.
 * User: liyifei2012it
 * Date: 18/3/26
 * Time: 17:00
 */
namespace Common\Service;

use Common\Common\Constant;
use Common\Common\Msg;
use Common\Model\CommonModel;
use Common\Model\TaskModel;

class TaskService extends AbstractService
{
    // 构造方法
    public function __construct()
    {
        $this->_d = new TaskModel();
        parent::__construct();
    }

    /**
     * 批量保存授课任务
     * @author zhonglei
     * @param array $teacher 讲师数据
     * @param array $task_datas 任务数据
     * @return bool
     */
    public function batchSave($teacher, $task_datas)
    {
        $tasks_existed = $this->list_by_conds(['teacher_id' => $teacher['teacher_id']]);
        $ids_delete = array_diff(array_column($tasks_existed, 'task_id'), array_column($task_datas, 'task_id'));

        // 删除的任务
        if (!empty($ids_delete)) {
            $this->delete($ids_delete);

            // 更新课程主表,解除关联关系
            $model = new CommonModel('Article', 'oa_course_');
            $model->update_by_conds(['teacher_task_id' => $ids_delete], ['teacher_task_id' => 0]);
        }

        foreach ($task_datas as $task_data) {
            $task_id = $task_data['task_id'];
            unset($task_data['task_id']);

            // 新建
            if ($task_id == 0) {
                $task_data['teacher_id'] = $teacher['teacher_id'];
                $task_data['task_id'] = $this->insert($task_data);

                if ($teacher['teacher_type'] == Constant::TEACHER_TYPE_INSIDE && !empty($teacher['uid'])) {
                    $this->sendTaskNotice($teacher['uid'], $task_data);
                }

            // 编辑
            } else {
                $this->update($task_id, $task_data);
            }
        }

        return true;
    }

    /**
     * 发送任务通知
     * @author zhonglei
     * @param string $uid 用户ID
     * @param array $task_data 任务数据
     * @return void
     */
    public function sendTaskNotice($uid, $task_data)
    {
        $url = oaUrl('Frontend/Index/Task/Index', ['task_id' => $task_data['task_id']]);
        $start_time = rgmdate($task_data['start_time'], 'Y/m/d');
        $end_time = rgmdate($task_data['end_time'], 'Y/m/d');

        $desc = "任务名称:{$task_data['task_name']}\n";
        $desc .= "任务时间:{$start_time} - {$end_time}\n";
        $desc .= "授课指标:{$task_data['target']}课时";

        $msg_data = [
            [
                'title' => '【讲师通知】您的授课任务有新安排!',
                'description' => $desc,
                'url' => $url,
            ]
        ];

        $msgServ = &Msg::instance();
        $msgServ->sendNews($uid, null, null, $msg_data);
    }
}