UsersService.cs 2.1 KB

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