UsersService.cs 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. using Microsoft.EntityFrameworkCore;
  2. using Microsoft.Extensions.Logging;
  3. using Senparc.Weixin.MP.AdvancedAPIs.OAuth;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Linq;
  7. using System.Threading.Tasks;
  8. using Winsoft.GOV.XF.WebApi.WXCore.Data;
  9. using Winsoft.GOV.XF.WebApi.WXCore.Helpers;
  10. using Winsoft.GOV.XF.WebApi.WXCore.Models;
  11. namespace Winsoft.GOV.XF.WebApi.WXCore.Services
  12. {
  13. public class UsersService: BaseService
  14. {
  15. public UsersService(XFDbContext context, ILoggerFactory loggerFactory):base(context, loggerFactory)
  16. {
  17. }
  18. public async Task<WXUser> GetUser(string openId)
  19. {
  20. if (!String.IsNullOrWhiteSpace(openId))
  21. return await _context.WXUsers.AsNoTracking().SingleOrDefaultAsync<WXUser>(m => m.OpenId == openId);
  22. return null;
  23. }
  24. public async Task AddUser(WXUser u)
  25. {
  26. _context.WXUsers.Add(u);
  27. await _context.SaveChangesAsync();
  28. }
  29. public async Task<WXUser> AddOrUpdate(OAuthUserInfo userInfo)
  30. {
  31. WXUser t = _context.WXUsers.FirstOrDefault(e => e.OpenId == userInfo.openid);
  32. if (t == null)
  33. await _context.WXUsers.AddAsync(new WXUser().CopyFromOAuthUserInfo(userInfo));
  34. else
  35. {
  36. t.CopyFromOAuthUserInfo(userInfo);
  37. _context.WXUsers.Update(t);
  38. }
  39. await _context.SaveChangesAsync();
  40. return t;
  41. }
  42. public async Task AddOrUpdate(WXUser u)
  43. {
  44. WXUser t = _context.WXUsers.FirstOrDefault(e => e.OpenId == u.OpenId);
  45. if (t == null)
  46. await _context.WXUsers.AddAsync(u);
  47. else
  48. {
  49. t.Mobile = u.Mobile;
  50. _context.WXUsers.Update(t);
  51. }
  52. await _context.SaveChangesAsync();
  53. }
  54. }
  55. }