UNPKG

nyx_server

Version:

Node内容发布

169 lines (159 loc) 4.96 kB
var config = require("../config/default-config"); var DBTemplate = require("../db/DBTemplate"); var dbtemplate = new DBTemplate(config.NYX_DB_CONFIG_NAME); var _ = require("lodash"); var Promise = require("bluebird"); /** * group_t * id 组id(auto) * name 组名称 * descr 组描述 * * group_user_t 用户组关系表 * group_id 组id * user_id 用户id * group_permission_t 组权限关系表 * group_id 组id * permission_id 权限id * group_template_t 组模板关系表 * group_id 组id * template_id 模板类别id * group_project_t 组项目关系表 * group_id 组id * project_id 项目id * group_chip_t 组碎片关系表 * group_id 组id * chip_id 碎片类别id * group_chip_ins_t 组碎片实例id * group_id 组id * chip_data_id 碎片实例id */ function isExistGroup(groupName){ var connection = this.connection || dbtemplate; var sql = "select Id from group_t where name = ?"; return connection.query(sql , [groupName]).then(function(result){ if(result && result.length>0){ return true; }else{ return false; } }) } /** * 添加组 */ function addGroup(name , descr){ var connection = this.connection || dbtemplate; return isExistGroup.bind({connection:connection})(name).then(function(result){ if(result){ throw new Error("组已经存在"); } var sql = "insert into group_t(name , descr) values(? , ?)"; return connection.query(sql , [name , descr]); }) } /** * 删除组 * @param groupId 组id */ function deleteGroup(groupId){ var connection = this.connection || dbtemplate; var sql = "delete from group_t where id= ? "; return connection.query(sql , [groupId]); } /** * 判断一个权限是否存在 * @param groupId 组id * @param permissionId 权限id */ function isExistPermission(groupId , permissionIds){ var connection = this.connection || dbtemplate; var sql = "select Id from group_permission_t where group_id = ? and promission_id in [?]"; if(!_.isArray(permissionIds)){ permissionIds = [permissionIds]; } return connection.query(sql , [groupId , permissionIds.join(",")]).then(function(result){ if(result && result.length>0){ return true; }else{ return false; } }) } /** * 为组添加权限 * @param groupId 组id * @param permissionIds 权限id列表 */ function setPermiessions(groupId , permissionIds){ var connection = this.connection || dbtemplate; var sql = "insert into group_permission_t(group_id , permission_id) values(? , ?)"; if(_.isArray(permissionIds)){ permissionIds = [permissionIds]; } return isExistPermission.bind({connection:connection})(groupId , permissionIds).then(function(ret){ if(ret){ //权限存在 throw new Error("权限已经存在"); } }).then(function(){ var allPromise = [] permissionIds.forEach(function(permissionId){ var p = connection.query(sql , [groupId , permissionId]); allPromise.push(p); }) return Promise.all(allPromise); }) } /** * 得到组权限列表 * @param groupId 组 */ function getPermissesions(groupId){ var connection = this.connection || dbtemplate; var sql = "select * from group_permission_t where group_id = ?" return connection.query(sql , [groupId]); } /** * 判断用户是否存在 * @param groupName 组名 * @param {Array|String}userName 用户名称 * @return Promise|boolean */ function isExist(groupName , userNames){ var connection = this.connection || dbtemplate; if(!_.isArray(userNames)){ userNames = [userNames]; } return connection.query("select id from group_user_t where group_id=? and user_id in (?)" , [groupName , userNames.join(",")]).then(function(result){ if(result && result.length>0){ return true; } return false; }); } /** * 添加组用户 * @param groupId 组id * @param userIds 添加的用户id */ function addGroupUser(groupId, userIds) { var connection = this.connection || dbtemplate; if(!_.isArray(userIds)){ userIds = []; } var sql = "insert into group_user_t value(group_id,user_id) values(? , ?)" return isExist.bind({connection:connection})(groupId, userIds).hten(function (ret) { if (ret) { throw new Error("用户已经存在"); } }).then(function () { return dbtemplate.execute(function (connection) { var allpromise = []; userIds.forEach(function (userId) { var p = connection.query(sql, [groupId, userId]); allpromise.push(p); }) return Promise.all(allpromise); }); }); }