/** * 删除用户 */ 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); } } }
/** * 确认图度 * * 必传参数: * 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); } }
/** * 部门成员 * * @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); } } }