using System; using System.Collections.Generic; using System.Data.Common; using System.Linq; using System.Text; using System.Threading.Tasks; using YiSha.Data; using YiSha.Data.Repository; using YiSha.Enum; using YiSha.Enum.OrganizationManage; using YiSha.Util; using YiSha.Util.Extension; namespace YiSha.Web.Code { public class DataRepository : RepositoryFactory { private DBConnectTypeEnum dbConnectType = DBConnectTypeEnum.SystemDB; public async Task GetUserByToken(string token) { if (!SecurityHelper.IsSafeSqlParam(token)) { return null; } token = token.ParseToString().Trim(); var strSql = new StringBuilder(); strSql.Append(@"SELECT a.Id as UserId, a.UserStatus, a.IsOnline, a.UserName, a.RealName, a.Portrait, a.DepartmentId, a.WebToken, a.ApiToken, a.IsSystem FROM SysUser a WHERE WebToken = @WebToken or ApiToken = @ApiToken"); var operatorInfo = await BaseRepository(dbConnectType).FindObject(strSql.ToString(), new DbParameter[] { DbParameterExtension.CreateDbParameter("@WebToken", token, dbConnectType), DbParameterExtension.CreateDbParameter("@ApiToken", token, dbConnectType) }); if (operatorInfo != null) { #region 角色 strSql.Clear(); strSql.Append(@"SELECT a.BelongId as RoleId FROM SysUserBelong a WHERE a.UserId = @UserId AND "); strSql.Append(" a.BelongType = @BelongType"); IEnumerable roleList = await BaseRepository(dbConnectType).FindList (strSql.ToString(), new DbParameter[] { DbParameterExtension.CreateDbParameter("@UserId", operatorInfo.UserId, dbConnectType), DbParameterExtension.CreateDbParameter("@BelongType", UserBelongTypeEnum.Role.ParseToInt(), dbConnectType) }); operatorInfo.RoleIds = string.Join(",", roleList.Select(p => p.RoleId).ToArray()); #endregion #region 部门名称 strSql.Clear(); strSql.Append(@"SELECT a.DepartmentName FROM SysDepartment a WHERE a.Id = @Id "); object departmentName = await BaseRepository(dbConnectType).FindObject( strSql.ToString(), new DbParameter[] { DbParameterExtension.CreateDbParameter("@Id",operatorInfo.DepartmentId, dbConnectType) }); operatorInfo.DepartmentName = departmentName.ParseToString(); #endregion } return operatorInfo; } } }