UserController.cs 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Threading.Tasks;
  5. using Microsoft.AspNetCore.Http;
  6. using Microsoft.AspNetCore.Mvc;
  7. using Winsoft.GOV.XF.WebApi.WXCore.Models;
  8. using Senparc.Weixin.MP.CoreMvcExtension;
  9. using Winsoft.GOV.XF.WebApi.WXCore.Filters;
  10. using Microsoft.Extensions.Options;
  11. using Senparc.Weixin.Entities;
  12. using Winsoft.GOV.XF.WebApi.WXCore.Data;
  13. using Microsoft.EntityFrameworkCore;
  14. using Microsoft.Extensions.Logging;
  15. namespace Winsoft.GOV.XF.WebApi.WXCore.Controllers
  16. {
  17. [Produces("application/json")]
  18. [Route("api/User")]
  19. public class UserController : BaseController
  20. {
  21. XFContext _context;
  22. ILogger _logger;
  23. public UserController(IOptions<SenparcWeixinSetting> senparcWeixinSetting, XFContext context, ILogger<UserController> logger) : base(senparcWeixinSetting)
  24. {
  25. _context = context;
  26. _logger = logger;
  27. }
  28. [HttpGet]
  29. [WeixinInternalRequest("访问被拒绝,请通过微信客户端访问!", "nofilter")]
  30. [WXOAuth(appId: null, oauthCallbackUrl: "/api/Auth")]
  31. public async Task<IActionResult> Get()
  32. {
  33. WXUser u = await _context.WXUsers.AsNoTracking().SingleOrDefaultAsync<WXUser>(m => m.OpenId == HttpContext.Session.GetString("OpenId"));
  34. if (u != null)
  35. return Ok(u);
  36. else
  37. return NotFound();
  38. }
  39. [HttpPost]
  40. [WeixinInternalRequest("访问被拒绝,请通过微信客户端访问!", "nofilter")]
  41. [WXOAuth(appId: null, oauthCallbackUrl: "/api/Auth")]
  42. public async Task<IActionResult> Post([FromBody]WXUser value)
  43. {
  44. WXUser u = await _context.WXUsers.AsNoTracking().SingleOrDefaultAsync<WXUser>(m => m.OpenId == HttpContext.Session.GetString("OpenId"));
  45. if (u != null && u.Mobile.Equals(value.Mobile, StringComparison.CurrentCultureIgnoreCase))
  46. {
  47. return Ok(u);
  48. }
  49. else
  50. {
  51. value.OpenId = HttpContext.Session.GetString("OpenId");
  52. value.Id = Guid.NewGuid();
  53. try
  54. {
  55. if (ModelState.IsValid)
  56. {
  57. _context.WXUsers.Add(value);
  58. await _context.SaveChangesAsync();
  59. return Ok(value);
  60. }
  61. return BadRequest("系统繁忙,稍后再试");
  62. }
  63. catch(Exception e)
  64. {
  65. _logger.LogError(e.Message);
  66. return BadRequest("系统异常,稍后再试");
  67. }
  68. }
  69. }
  70. }
  71. }