コード例 #1
0
        /// <summary>
        /// 获取用户编号
        /// </summary>
        /// <param name="systemCode"></param>
        /// <param name="permissionId"></param>
        /// <returns></returns>
        public string[] GetUserIdsByPermissionId(string systemCode, string permissionId)
        {
            DataTable dt = null;

            string[] result = null;
            if (!string.IsNullOrEmpty(permissionId))
            {
                var tableName = systemCode + "Permission";
                var sql       = string.Empty;

                // 1.本人直接就有某个操作权限的。
                sql = "SELECT ResourceId FROM " + tableName + " WHERE (ResourceCategory = '" + systemCode + "User') AND (PermissionId = " + permissionId + ") AND (" + BaseModuleEntity.FieldDeleted + " = 0) AND (" + BaseUtil.FieldEnabled + " = 1) ";
                dt  = Fill(sql);
                var userIds = BaseUtil.FieldToArray(dt, BasePermissionEntity.FieldResourceId).Distinct <string>().Where(t => !string.IsNullOrEmpty(t)).ToArray();

                // 2.角色本身就有某个操作权限的。
                sql = "SELECT ResourceId FROM " + tableName + " WHERE (ResourceCategory = '" + systemCode + "Role') AND (PermissionId = " + permissionId + ") AND (" + BaseModuleEntity.FieldDeleted + " = 0) AND (" + BaseUtil.FieldEnabled + " = 1) ";
                dt  = Fill(sql);
                var roleIds = StringUtil.Concat(result, BaseUtil.FieldToArray(dt, BasePermissionEntity.FieldResourceId)).Distinct <string>().Where(t => !string.IsNullOrEmpty(t)).ToArray();

                // 3.组织机构有某个操作权限。。
                sql = "SELECT ResourceId FROM " + tableName + " WHERE (ResourceCategory = '" + systemCode + "Organization') AND (PermissionId = " + permissionId + ") AND (" + BaseModuleEntity.FieldDeleted + " = 0) AND (" + BaseUtil.FieldEnabled + " = 1) ";
                dt  = Fill(sql);
                var organizationIds = StringUtil.Concat(result, BaseUtil.FieldToArray(dt, BasePermissionEntity.FieldResourceId)).Distinct <string>().Where(t => !string.IsNullOrEmpty(t)).ToArray();

                // 4.获取所有有这个操作权限的用户Id,而且这些用户是有效的。
                var userManager = new BaseUserManager(DbHelper, UserInfo);
                result = userManager.GetUserIds(userIds, organizationIds, roleIds);
            }
            return(result);
        }
コード例 #2
0
        public string[] GetUserIdsByPermissionId(string organizeId, string permissionId)
        {
            DataTable dt = null;

            string[] result = null;
            if (!string.IsNullOrEmpty(permissionId))
            {
                string tableName = UserInfo.SystemCode + "PermissionScope";
                string sqlQuery  = string.Empty;

                // 1.本人直接就有某个操作权限的。
                sqlQuery = "SELECT ResourceId FROM " + tableName + " WHERE (ResourceCategory = 'BaseUser') AND (PermissionId = " + permissionId + ") AND TargetCategory='BaseOrganize' AND TargetId = " + organizeId + " AND (DeletionStateCode = 0) AND (Enabled = 1) ";
                dt       = this.Fill(sqlQuery);
                string[] userIds = BaseBusinessLogic.FieldToArray(dt, BasePermissionEntity.FieldResourceId).Distinct <string>().Where(t => !string.IsNullOrEmpty(t)).ToArray();

                // 2.角色本身就有某个操作权限的。
                sqlQuery = "SELECT ResourceId FROM " + tableName + " WHERE (ResourceCategory = 'BaseRole') AND (PermissionId = " + permissionId + ") AND TargetCategory='BaseOrganize' AND TargetId = " + organizeId + " AND (DeletionStateCode = 0) AND (Enabled = 1) ";
                dt       = this.Fill(sqlQuery);
                string[] roleIds = StringUtil.Concat(result, BaseBusinessLogic.FieldToArray(dt, BasePermissionEntity.FieldResourceId)).Distinct <string>().Where(t => !string.IsNullOrEmpty(t)).ToArray();

                // 3.组织机构有某个操作权限。
                // sqlQuery = "SELECT ResourceId FROM " + tableName + " WHERE (ResourceCategory = 'BaseOrganize') AND (PermissionId = " + result + ") AND (DeletionStateCode = 0) AND (Enabled = 1) ";
                // result = this.Fill(sqlQuery);
                // string[] ids = StringUtil.Concat(result, BaseBusinessLogic.FieldToArray(result, BasePermissionEntity.FieldResourceId)).Distinct<string>().Where(t => !string.IsNullOrEmpty(t)).ToArray();

                // 4.获取所有有这个操作权限的用户Id,而且这些用户是有效的。
                BaseUserManager userManager = new BaseUserManager(this.DbHelper, this.UserInfo);
                result = userManager.GetUserIds(userIds, null, roleIds);
            }
            return(result);
        }
コード例 #3
0
        /// <summary>
        /// 批量发送消息
        /// </summary>
        /// <param name="receiverIds">接收者主键组</param>
        /// <param name="organizeIds">组织机构主键组</param>
        /// <param name="roleIds">角色主键组</param>
        /// <param name="content">内容</param>
        /// <returns>影响行数</returns>
        public int BatchSend(string[] receiverIds, string[] organizeIds, string[] roleIds, BaseMessageEntity messageEntity, bool saveSend = true)
        {
            BaseUserManager userManager = new BaseUserManager(DbHelper, UserInfo);

            receiverIds = userManager.GetUserIds(receiverIds, organizeIds, roleIds);
            return(this.Send(messageEntity, receiverIds, saveSend));
        }
コード例 #4
0
        /// <summary>
        /// 发送联络单
        /// </summary>
        /// <param name="receiverIds">接收者</param>
        /// <param name="organizeIds">组织机构数组</param>
        /// <param name="roleIds">角色数组</param>
        /// <returns>影响行数</returns>
        public int Send(string contactId, string[] receiverIds, string[] organizeIds, string[] roleIds)
        {
            BaseUserManager userManager = new BaseUserManager(DbHelper, UserInfo);

            receiverIds = userManager.GetUserIds(receiverIds, organizeIds, roleIds);

            // 删除邮件的处理技巧、发送给部门的、发送给角色的。
            // 删除邮件的列表过滤问题解决
            BaseContactDetailsManager contactDetailsManager = new BaseContactDetailsManager(DbHelper, UserInfo);
            BaseContactDetailsEntity  contactDetailsEntity  = null;

            // 组织机构数组
            if (organizeIds != null)
            {
                BaseOrganizeManager organizeManager = new BaseOrganizeManager(DbHelper, UserInfo);
                for (int i = 0; i < organizeIds.Length; i++)
                {
                    contactDetailsEntity = new BaseContactDetailsEntity();
                    // 这里一定要给个不可猜测的主键,为了提高安全性
                    contactDetailsEntity.Id               = BaseBusinessLogic.NewGuid();
                    contactDetailsEntity.ContactId        = contactId;
                    contactDetailsEntity.Category         = "Organize";
                    contactDetailsEntity.ReceiverId       = organizeIds[i];
                    contactDetailsEntity.ReceiverRealName = organizeManager.GetProperty(organizeIds[i], BaseOrganizeEntity.FieldFullName);
                    contactDetailsEntity.IsNew            = 1;
                    contactDetailsEntity.Enabled          = 1;
                    contactDetailsEntity.NewComment       = 0;
                    contactDetailsManager.Add(contactDetailsEntity, false);
                }
            }

            // 角色数组
            if (roleIds != null)
            {
                BaseRoleManager roleManager = new BaseRoleManager(DbHelper, UserInfo);
                for (int i = 0; i < roleIds.Length; i++)
                {
                    contactDetailsEntity = new BaseContactDetailsEntity();
                    // 这里一定要给个不可猜测的主键,为了提高安全性
                    contactDetailsEntity.Id               = BaseBusinessLogic.NewGuid();
                    contactDetailsEntity.ContactId        = contactId;
                    contactDetailsEntity.Category         = "Role";
                    contactDetailsEntity.ReceiverId       = roleIds[i];
                    contactDetailsEntity.ReceiverRealName = roleManager.GetProperty(roleIds[i], BaseRoleEntity.FieldRealName);
                    contactDetailsEntity.IsNew            = 1;
                    contactDetailsEntity.Enabled          = 1;
                    contactDetailsEntity.NewComment       = 0;
                    contactDetailsManager.Add(contactDetailsEntity, false);
                }
            }

            return(this.Send(contactId, receiverIds));
        }
コード例 #5
0
 public string[] GetUserIds(string[] organizeIds, string[] roleIds)
 {
     // 要注意不能重复发信息,只能发一次。
     string[] companyUsers    = null; // 按公司查找用户
     string[] departmentUsers = null; // 按部门查找用户
     string[] workgroupUsers  = null; // 按工作组查找用户
     if (organizeIds != null)
     {
         // 这里获得的是用户主键,不是员工主键
         companyUsers    = this.GetProperties(BaseUserEntity.FieldCompanyId, organizeIds, BaseUserEntity.FieldId);
         departmentUsers = this.GetProperties(BaseUserEntity.FieldDepartmentId, organizeIds, BaseUserEntity.FieldId);
         workgroupUsers  = this.GetProperties(BaseUserEntity.FieldWorkgroupId, organizeIds, BaseUserEntity.FieldId);
     }
     string[] roleUsers = null;
     if (roleIds != null)
     {
         BaseUserManager userManager = new BaseUserManager(DbHelper);
         roleUsers = userManager.GetUserIds(roleIds);
     }
     string[] userIds = StringUtil.Concat(companyUsers, departmentUsers, workgroupUsers, roleUsers);
     return(userIds);
 }