DataRepository.cs 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Data.Common;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. using YiSha.Data;
  8. using YiSha.Data.Repository;
  9. using YiSha.Enum;
  10. using YiSha.Enum.OrganizationManage;
  11. using YiSha.Util;
  12. using YiSha.Util.Extension;
  13. namespace YiSha.Web.Code
  14. {
  15. public class DataRepository : RepositoryFactory
  16. {
  17. private DBConnectTypeEnum dbConnectType = DBConnectTypeEnum.SystemDB;
  18. public async Task<OperatorInfo> GetUserByToken(string token)
  19. {
  20. if (!SecurityHelper.IsSafeSqlParam(token))
  21. {
  22. return null;
  23. }
  24. token = token.ParseToString().Trim();
  25. var strSql = new StringBuilder();
  26. strSql.Append(@"SELECT a.Id as UserId,
  27. a.UserStatus,
  28. a.IsOnline,
  29. a.UserName,
  30. a.RealName,
  31. a.Portrait,
  32. a.DepartmentId,
  33. a.WebToken,
  34. a.ApiToken,
  35. a.IsSystem
  36. FROM SysUser a
  37. WHERE WebToken = @WebToken or ApiToken = @ApiToken");
  38. var operatorInfo = await BaseRepository(dbConnectType).FindObject<OperatorInfo>(strSql.ToString(), new DbParameter[] {
  39. DbParameterExtension.CreateDbParameter("@WebToken", token, dbConnectType),
  40. DbParameterExtension.CreateDbParameter("@ApiToken", token, dbConnectType)
  41. });
  42. if (operatorInfo != null)
  43. {
  44. #region 角色
  45. strSql.Clear();
  46. strSql.Append(@"SELECT a.BelongId as RoleId
  47. FROM SysUserBelong a
  48. WHERE a.UserId = @UserId AND ");
  49. strSql.Append(" a.BelongType = @BelongType");
  50. IEnumerable<RoleInfo> roleList = await BaseRepository(dbConnectType).FindList<RoleInfo>
  51. (strSql.ToString(),
  52. new DbParameter[] {
  53. DbParameterExtension.CreateDbParameter("@UserId", operatorInfo.UserId, dbConnectType),
  54. DbParameterExtension.CreateDbParameter("@BelongType", UserBelongTypeEnum.Role.ParseToInt(), dbConnectType)
  55. });
  56. operatorInfo.RoleIds = string.Join(",", roleList.Select(p => p.RoleId).ToArray());
  57. #endregion
  58. #region 部门名称
  59. strSql.Clear();
  60. strSql.Append(@"SELECT a.DepartmentName
  61. FROM SysDepartment a
  62. WHERE a.Id = @Id ");
  63. object departmentName = await BaseRepository(dbConnectType).FindObject(
  64. strSql.ToString(),
  65. new DbParameter[] {
  66. DbParameterExtension.CreateDbParameter("@Id",operatorInfo.DepartmentId, dbConnectType)
  67. });
  68. operatorInfo.DepartmentName = departmentName.ParseToString();
  69. #endregion
  70. }
  71. return operatorInfo;
  72. }
  73. }
  74. }