nyx_server
Version:
Node内容发布
169 lines (159 loc) • 4.96 kB
JavaScript
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);
});
});
}