UserController.cs 2.7 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. try
  53. {
  54. if (ModelState.IsValid)
  55. {
  56. _context.WXUsers.Add(value);
  57. await _context.SaveChangesAsync();
  58. return Ok(value);
  59. }
  60. return BadRequest("系统繁忙,稍后再试");
  61. }
  62. catch(Exception e)
  63. {
  64. _logger.LogError(e.Message);
  65. return BadRequest("系统异常,稍后再试");
  66. }
  67. }
  68. }
  69. }
  70. }