예제 #1
0
파일: User.php 프로젝트: bjtenao/tudu-web
 /**
  * 删除用户
  */
 public function delete(array $params)
 {
     // 组织ID必须有
     if (empty($params['orgid'])) {
         require_once 'Model/User/Exception.php';
         throw new Model_User_Exception('Missing or invalid value of parameter "orgid"', self::CODE_INVALID_ORGID);
     }
     $orgId = $params['orgid'];
     /* @var $daoUser Dao_Md_User_User */
     $daoUser = Tudu_Dao_Manager::getDao('Dao_Md_User_User', Tudu_Dao_Manager::DB_MD);
     // 用户名
     if (empty($params['userid'])) {
         require_once 'Model/User/Exception.php';
         throw new Model_User_Exception('Missing the value of parameter "userid"', self::CODE_MISSING_UID);
     }
     $userIds = is_array($params['userid']) ? $params['userid'] : (array) $params['userid'];
     $ret = true;
     $uniqueIds = array();
     foreach ($userIds as $userId) {
         $cuser = $daoUser->getUser(array('orgid' => $orgId, 'userid' => $userId));
         $infouser = $daoUser->getUserInfo(array('orgid' => $orgId, 'userid' => $userId));
         // 用户已不存在
         if (null == $cuser) {
             continue;
         }
         // 是否超级管理员
         if ($daoUser->isAdmin($orgId, $userId)) {
             require_once 'Model/User/Exception.php';
             throw new Model_User_Exception('Can not delete super administrator "' . $userId . '@' . $orgId . '"', self::CODE_DELETE_SUPER_ADMIN);
         }
         if (!$daoUser->deleteUser($orgId, $userId)) {
             $ret = false;
             continue;
         }
         $uniqueIds[] = $cuser->uniqueId;
         // 添加操作日志
         if (!empty($params['operator']) && !empty($params['clientip'])) {
             $params['local'] = empty($params['local']) ? null : $params['local'];
             $this->_createLog(Dao_Md_Log_Oplog::MODULE_USER, Dao_Md_Log_Oplog::OPERATION_DELETE, null, array('orgid' => $orgId, 'operator' => $params['operator'], 'clientip' => $params['clientip'], 'local' => $params['local']), implode(':', array($cuser->orgId, $cuser->userName, $cuser->uniqueId)), array('truename' => $infouser->trueName, 'account' => $cuser->userName));
         }
     }
     if (!$ret) {
         require_once 'Model/User/Exception.php';
         throw new Model_User_Exception('Delete user failed', self::CODE_SAVE_FAILED);
     }
     // 发送通知,插入消息队列
     if (Tudu_Model::hasResource(Tudu_Model::RESOURCE_CONFIG)) {
         $config = Tudu_Model::getResource(Tudu_Model::RESOURCE_CONFIG);
         if ($config['httpsqs']) {
             $options = $config['httpsqs'];
             $httpsqs = new Oray_Httpsqs($options['host'], $options['port'], $options['charset'], $options['name']);
             $data = implode(' ', array(Dao_Md_Log_Oplog::MODULE_DEPT, Dao_Md_Log_Oplog::OPERATION_DELETE, null, implode(':', array($orgId, implode(',', $uniqueIds)))));
             $httpsqs->put($data);
         }
     }
 }
예제 #2
0
파일: Tudu.php 프로젝트: bjtenao/tudu-web
 /**
  * 确认图度
  *
  * 必传参数:
  * tuduid|uniqueid|username|orgid|userinfo|tsid
  * isdone不传值为false
  * score不传值为0
  */
 public function done(array $params)
 {
     if (empty($params['tuduid'])) {
         require_once 'Model/Tudu/Exception.php';
         throw new Model_Tudu_Exception('Missing or invalid value of parameter "tuduid"', self::CODE_INVALID_TUDUID);
     }
     $uniqueId = $this->_user->uniqueId;
     $userName = $this->_user->userName;
     $tuduIds = !is_array($params['tuduid']) ? (array) $params['tuduid'] : $params['tuduid'];
     $isDone = !empty($params['isdone']) ? true : false;
     $score = !empty($params['score']) ? (int) $params['score'] : 0;
     $manager = $this->getManager();
     $success = 0;
     //用于计数操作成功个数
     foreach ($tuduIds as $tuduId) {
         $tudu = $manager->getTuduById($tuduId, $uniqueId);
         // 图度必须存在
         if (null == $tudu) {
             continue;
         }
         // 图度不能是已确定状态
         if ($tudu->isDone && $isDone) {
             continue;
         }
         // 操作人必须为图度发起人
         if ($tudu->sender != $userName) {
             continue;
         }
         // 图度不能是“未开始”,“进行中”等状态
         if (($tudu->type != 'task' || $tudu->status < 2) && $isDone) {
             continue;
         }
         if (!$isDone) {
             $score = 0;
         }
         // 执行确认/取消确认图度操作
         $ret = $manager->doneTudu($tuduId, $isDone, $score, false, $tudu->parentId != null, $tudu->type);
         if ($ret) {
             $success++;
             // 添加操作日志
             $this->_writeLog(Dao_Td_Log_Log::TYPE_TUDU, $tuduId, $isDone ? Dao_Td_Log_Log::ACTION_TUDU_DONE : Dao_Td_Log_Log::ACTION_TUDU_UNDONE, array('orgid' => $this->_user->orgId, 'uniqueid' => $uniqueId, 'userinfo' => $this->_user->userInfo), array('isdone' => $isDone, 'score' => $score));
             // 发送通知,插入消息队列
             if (Tudu_Model::hasResource(Tudu_Model::RESOURCE_CONFIG)) {
                 $config = Tudu_Model::getResource(Tudu_Model::RESOURCE_CONFIG);
                 if ($config['httpsqs']) {
                     $options = $config['httpsqs'];
                     $httpsqs = new Oray_Httpsqs($options['host'], $options['port'], $options['charset'], $options['name']);
                     $data = implode(' ', array('send', 'tudu', '', http_build_query(array('tsid' => $this->_user->tsId, 'tuduid' => $tuduId, 'uniqueid' => $uniqueId, 'to' => '', 'act' => 'confirm'))));
                     $httpsqs->put($data, 'send');
                 }
             }
         }
     }
     if ($success <= 0) {
         require_once 'Model/Tudu/Exception.php';
         throw new Model_Tudu_Exception('Append to inbox failed', self::CODE_SAVE_FAILED);
     }
 }
예제 #3
0
 /**
  * 部门成员
  *
  * @param string $orgId
  * @param string $deptId
  * @param array  $member
  * @param array  $params
  */
 public function updateMember($orgId, $deptId, array $member, array $params)
 {
     /* @var $daoDept Dao_Md_Department_Department */
     $daoDept = Tudu_Dao_Manager::getDao('Dao_Md_Department_Department', Tudu_Dao_Manager::DB_MD);
     if (empty($deptId)) {
         require_once 'Model/Department/Exception.php';
         throw new Model_Department_Exception('Invalid or missing parameter "deptid"', self::CODE_INVALID_DEPTID);
     }
     if (empty($orgId)) {
         require_once 'Model/Department/Exception.php';
         throw new Model_Department_Exception('Invalid or missing params "orgid"', self::CODE_INVALID_ORGID);
     }
     $department = $daoDept->getDepartment(array('orgid' => $orgId, 'deptid' => $deptId));
     if (!$department) {
         require_once 'Model/Department/Exception.php';
         throw new Model_Department_Exception('Parent department not exists', self::CODE_DEPARTMENT_NOTEXISTS);
     }
     $ret = $daoDept->removeUser($orgId, $deptId);
     if (!$ret) {
         require_once 'Model/Department/Exception.php';
         throw new Model_Department_Exception('Update department failed', self::CODE_SAVE_FAILED);
     }
     if (!empty($member)) {
         $ret = $daoDept->addUser($orgId, $deptId, $member);
         if (!$ret) {
             require_once 'Model/Department/Exception.php';
             throw new Model_Department_Exception('Update department failed', self::CODE_SAVE_FAILED);
         }
         /* @var $daoCast Dao_Md_User_Cast */
         $daoCast = Tudu_Dao_Manager::getDao('Dao_Md_User_Cast', Tudu_Dao_Manager::DB_MD);
         foreach ($member as $userId) {
             $daoCast->updateCastDept($orgId, $userId, $deptId);
         }
     }
     // 添加后台操作日志
     if (!empty($params['operator']) && !empty($params['clientip'])) {
         $params['local'] = empty($params['local']) ? null : $params['local'];
         $this->_createLog(Dao_Md_Log_Oplog::MODULE_DEPT, Dao_Md_Log_Oplog::OPERATION_UPDATE, 'user', array('orgid' => $orgId, 'operator' => $params['operator'], 'clientip' => $params['clientip'], 'local' => $params['local']), implode(':', array($orgId, $deptId)), array('deptname' => $department->deptName));
     }
     // 发送通知
     if (Tudu_Model::hasResource(Tudu_Model::RESOURCE_CONFIG)) {
         $config = Tudu_Model::getResource(Tudu_Model::RESOURCE_CONFIG);
         if ($config['httpsqs']) {
             $options = $config['httpsqs'];
             $httpsqs = new Oray_Httpsqs($options['host'], $options['port'], $options['charset'], $options['name']);
             $data = implode(' ', array(Dao_Md_Log_Oplog::MODULE_USER, Dao_Md_Log_Oplog::OPERATION_UPDATE, null, implode(':', array($orgId, $deptId))));
             $ret = $httpsqs->put($data);
         }
     }
 }