SiteService.cs 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. using Fuel.Core;
  2. using Fuel.Core.Models;
  3. using Fuel.Core.Nozzle.Dto;
  4. using Fuel.Core.Transactions.Dto;
  5. using Fuel.Core.WechatServer;
  6. using FuelServer.Core.Entity;
  7. using Newtonsoft.Json;
  8. using System;
  9. using System.Collections.Generic;
  10. using System.Linq;
  11. using System.Net.Http.Headers;
  12. using System.Text;
  13. using System.Threading.Tasks;
  14. namespace Fuel.Application.Service
  15. {
  16. public class SiteService: ISiteService
  17. {
  18. public readonly IFreeSql _fsql;
  19. public SiteService(IFreeSql freeSql)
  20. {
  21. _fsql = freeSql;
  22. }
  23. public async Task<ServiceResponse> GetSiteInfo()
  24. {
  25. Guid Buid = HttpRequestReader.GetCurrentBuId(); //站点id
  26. var site = _fsql.Select<businessunitinfo>().Where(_ => _.Buid == Buid ).First();
  27. var SiteInfo = new {
  28. site = new {
  29. Name = site.Name,//站点名称
  30. GpsCoordinates = site.GpsCoordinates,//油站经纬度
  31. PaymentMode = site.PaymentMode,//预支付:1,后支付:2
  32. },
  33. userInfo = new
  34. {
  35. UserName = "",//用户名称
  36. UserAvatarUrl = "",//用户头像地址
  37. UserAddress= "",//用户地址
  38. UserPhoneNumber = ""//用户手机号
  39. }
  40. };
  41. return ServiceResponse.Ok(SiteInfo);
  42. }
  43. public async Task<ServiceResponse> GetAppidSecret(string Code)
  44. {
  45. Guid Buid = HttpRequestReader.GetCurrentBuId(); //站点id
  46. var site = _fsql.Select<businessunitinfo>().Where(_ => _.Buid == Buid).First();
  47. if (site == null)
  48. {
  49. return ServiceResponse.Error("获取站点小程序appid与Secret失败,BUID:" + Buid);
  50. }
  51. WechatUserSessionResponse userSession =
  52. await WechatLoginCodeToSessionKeyNOpenId(Code, site.Appid,site.Secret);
  53. var thirdSessionKey = GenerateThirdSessionKey();
  54. WechatUserSessionRepo.AddUserSession(thirdSessionKey, userSession);
  55. return ServiceResponse.Ok(thirdSessionKey);
  56. }
  57. /// <summary>
  58. /// 微信小程序登录
  59. /// </summary>
  60. /// <param name="jsCode"></param>
  61. /// <param name="AppId"></param>
  62. /// <param name="AppSecret"></param>
  63. /// <returns></returns>
  64. public static async Task<WechatUserSessionResponse> WechatLoginCodeToSessionKeyNOpenId(string jsCode, string AppId, string AppSecret)
  65. {
  66. string url = string.Format(WechatConstants.Jscode2sessionUrl,
  67. AppId, AppSecret, jsCode);
  68. HttpClient client = new HttpClient();
  69. client.DefaultRequestHeaders.Accept.Clear();
  70. client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
  71. HttpResponseMessage response = await client.GetAsync(url);
  72. if (response.IsSuccessStatusCode)
  73. {
  74. var responseContent = await response.Content.ReadAsStringAsync();
  75. var userSession = JsonConvert.DeserializeObject<WechatUserSessionResponse>(responseContent);
  76. return userSession;
  77. }
  78. else
  79. {
  80. return null;
  81. }
  82. }
  83. private string GenerateThirdSessionKey()
  84. {
  85. var thirdSessionKey = Guid.NewGuid();
  86. return thirdSessionKey.ToString();
  87. }
  88. }
  89. }