public ShortUrlResult Create(string longUrl, string baseUrl) { var result = new ShortUrlResult { Code = 0 }; var md5 = Md5(longUrl); var hadMap = _dictMaps.FirstOrDefault(d => d.Value.Md5 == md5); if (hadMap.Value != null) { result.ShortUrl = $"{baseUrl}/{hadMap.Value.ShortUrl}"; return(result); } lock (Locker) { using (var dc = new ShortUrlContext()) { var umTmp = dc.UrlMaps.FirstOrDefault(d => d.Md5 == md5); if (umTmp != null) { ChangeRate(umTmp); result.ShortUrl = umTmp.ShortUrl; return(result); } if (_maxRecord == null) { _maxRecord = new MaxRecord { Id = Guid.NewGuid(), Status = 0, No = 1, LastChange = DateTime.Now }; dc.MaxRecords.Add(_maxRecord); } else { _maxRecord.No += 1; _maxRecord.LastChange = DateTime.Now; var old = dc.MaxRecords.Find(_maxRecord.Id); dc.Entry(old).CurrentValues.SetValues(_maxRecord); } var um = new UrlMap { Id = Guid.NewGuid(), LongUrl = longUrl, ShortUrl = Encrypt(_maxRecord.No), Md5 = md5, Status = (int)EntityStatus.Init, LastChange = DateTime.Now }; dc.UrlMaps.Add(um); dc.SaveChanges(); ChangeRate(um); result.ShortUrl = $"{baseUrl}/{um.ShortUrl}"; return(result); } } }
public User CreateUser(string companyName) { using (var dc = new ShortUrlContext()) { var user = dc.Users.FirstOrDefault(d => d.CompanyName == companyName.Trim()); if (user != null) { return(user); } user = new User { Id = Guid.NewGuid(), CompanyName = companyName.Trim(), LastChange = DateTime.Now }; user.Token = Md5(user.Id + user.CompanyName); dc.Users.Add(user); dc.SaveChanges(); return(user); } }
public static Service GetInstance() { if (_serviceInstance == null) { using (var dc = new ShortUrlContext()) { _userAdmin = dc.Users.FirstOrDefault(d => d.CompanyName == CsAdminName); if (_userAdmin == null) { _userAdmin = new User { Id = Guid.NewGuid(), CompanyName = CsAdminName, LastChange = DateTime.Now }; _userAdmin.Token = Md5(_userAdmin.Id + CsAdminName); dc.Users.Add(_userAdmin); dc.SaveChanges(); } } _serviceInstance = new Service(); } return(_serviceInstance); }