using Microsoft.AspNetCore.Mvc; using SKIT.FlurlHttpClient.Wechat.Api; using SKIT.FlurlHttpClient.Wechat.Api.Models; using System.Web; using ZR.Model.Business.Dto; using ZR.Model.Business; using ZR.Service.Business.IBusinessService; namespace ZR.Admin.WebApi.Controllers { /// /// 微信公众号 /// [Route("[controller]/[action]")] [AllowAnonymous] public class WxOpenController : BaseController { private readonly WechatApiClient _client; /// /// 礼品申领表接口 /// private readonly IGiftClaimService _GiftClaimService; /// /// 微信用户表接口 /// private readonly IGiftUserService _GiftUserService; public WxOpenController(WechatApiClient client, IGiftUserService GiftUserService, IGiftClaimService giftClaimService) { _client = client; _GiftUserService = GiftUserService; _GiftClaimService = giftClaimService; } /// /// 获取签名 /// /// /// [Log(Title = "获取微信签名")] [HttpGet] public IActionResult GetSignature(string url = "") { url = HttpUtility.UrlDecode(url); var appId = AppSettings.App(new string[] { "WxOpen", "AppID" }); var noncestr = Guid.NewGuid().ToString().Replace("-", ""); var timestamp = DateTimeHelper.GetUnixTimeSeconds(DateTime.Now); var ticketResult = WxHelper.GetTicket(); if (appId.IsEmpty()) return ToResponse(ResultCode.CUSTOM_ERROR, "appId未配置"); if (ticketResult?.errcode != 0) { return ToResponse(ResultCode.CUSTOM_ERROR, "获取配置失败"); } var signature = WxHelper.GetSignature(ticketResult.ticket, timestamp.ToString(), noncestr, url); return SUCCESS(new { appId, signature, noncestr, timestamp, url }); } [HttpGet("login")] [AllowAnonymous] public async Task GetOpenId([FromQuery] string code) { var response = await _client.ExecuteSnsJsCode2SessionAsync(new SnsJsCode2SessionRequest { JsCode = code, GrantType = "authorization_code" }); if (!response.IsSuccessful()) { throw new Exception($"获取OpenId失败: {response.ErrorMessage}"); // 可以根据需要处理异常 } var openId = response.OpenId; var user = await _GiftUserService.AsQueryable().Where(it => it.Openid == openId).FirstAsync(); if (user == null) { //response. user = new GiftUser() { AvatarUrl = "", CreateTime = DateTime.Now, Nickname = "微信用户", Openid = openId, UpdateTime = DateTime.Now, LastLoginTime = DateTime.Now, Phone = "", Status = "0", Unionid = "" }; _GiftUserService.AddGiftUser(user); } return SUCCESS(new { user_id = user.Id }); } [HttpGet("getRecord")] [AllowAnonymous] public async Task GetRecord([FromQuery] int user_id) { if (user_id == 0) { return ToResponse(ResultCode.CUSTOM_ERROR, "用户不存在"); } var user = await _GiftUserService.AsQueryable().Where(it => it.Id == user_id).FirstAsync(); if (user == null) { return ToResponse(ResultCode.CUSTOM_ERROR, "用户不存在"); } var list = await _GiftClaimService.AsQueryable().Where(it => it.UserId == user_id).ToListAsync(); List list1 = new List(); list?.ForEach(it => { list1.Add(new { it.Status, it.Name, it.Address, it.Phone }); }); return SUCCESS(list1); } } }