using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Threading.Tasks; using Autofac.Core; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using MySqlX.XDevAPI.Common; using New_College.AuthHelper.OverWrite; using New_College.IServices; using New_College.Model; using New_College.Model.Models; using New_College.Model.Request; using New_College.Model.ViewModels; using Org.BouncyCastle.Asn1.Ocsp; namespace New_College.Api.Controllers.Front { [Route("api/front/[controller]/[action]")] [ApiController] [Authorize(Roles = "users")] public class CustomerController : ControllerBase { private readonly IV_CustomerInfoServices _services; public CustomerController(IV_CustomerInfoServices IV_CustomerInfoServices) { _services = IV_CustomerInfoServices; } /// /// 获取微信openid /// /// /// [HttpPost] [AllowAnonymous] public MessageModel GetWxOpenId(WeixinLogin login) { var response = new CustomerInfoResult(); try { var result = _services.AuthCode2Session(login.code); if (result.openid != "" && result.openid != null) { var loginstatus = _services.Logined(new LoginQuery() { openId = result.openid }).Result; if (loginstatus.Item1) { response = loginstatus.Item2; } else { var save = _services.CustomerSave(new DecryptUserInfoRequest() { openid = result.openid }).Result; response.OpenId = result.openid; response.Id = save; } TokenModelJwt tokenModel = new TokenModelJwt { Uid = response.Id, Role = "users" }; response.Token = JwtHelper.IssueJwt(tokenModel); response.session_key = result.session_key; return new MessageModel() { success = true, msg = "success", response = response }; } else { return new MessageModel() { success = false, response = response }; } } catch (Exception ex) { return new MessageModel() { msg = ex.ToString(), success = false, response = response }; } } [AllowAnonymous] [HttpPost] [DisplayName("获取微信用户电话号码")] public async Task> GetWxPhone(DecryptUserPhoneRequest request) { var accessToken = _services.access_Token(); var reqUserPhoneNumber = new WxaBusinessGetUserPhoneNumberRequest() { code = request.code, access_Token = accessToken.access_token, }; var repUserPhoneNumber = _services.WxaBusinessGetUserPhoneNumber(reqUserPhoneNumber); var customerinfo = (await _services.Query(e => e.OpenId == request.openId)).FirstOrDefault(); customerinfo.Phone = repUserPhoneNumber.phone_info.phoneNumber; var result = repUserPhoneNumber.errcode == 0 ? await _services.Update(customerinfo) : false; return new MessageModel() { msg = result ? "修改成功" : "保存失败", response = repUserPhoneNumber.phone_info.phoneNumber, success = result ? true : false, }; } /// /// 解密手机号同时保存用户信息 /// /// /// [HttpPost] [AllowAnonymous] public async Task> WeixinDecryptUserInfo(DecryptUserInfoRequest request) { var phoneinfo = _services.GetWeixinPhone(new GetPhoneInfo() { encryptedData = request.encryptedData, iv = request.iv, openid = request.openid, session_key = request.session_key }); request.phone = phoneinfo; var customerinfo = (await _services.Query(e => e.OpenId == request.openid)).FirstOrDefault(); customerinfo.AvatarUrl = request.avatarUrl; customerinfo.NickName = request.nickName; customerinfo.Gender = request.gender; customerinfo.Phone = phoneinfo; var result = await _services.Update(customerinfo); if (result) { return new MessageModel() { msg = result ? "修改成功" : "保存失败", response = phoneinfo, success = result }; } else { return new MessageModel() { msg = result ? "修改成功" : "保存失败", response = "0", success = result }; } } /// ///用户获取用户信息有OpenId 调用此接口 /// /// /// [HttpGet] public async Task> GetUserInfo([FromQuery] LoginQuery query) { var result = await _services.GetUserInfo(query); return new MessageModel() { response = result.Item2, success = result.Item1, msg = result.Item1 ? "登陆成功" : "用户不存在" }; } /// /// 更改分数 /// /// /// [HttpPost] public async Task> UpdateScore(UpdateScoreQuery query) { var result = await _services.UpdateScore(query); if (result.Id > 0) { var token = JwtHelper.IssueJwt(new TokenModelJwt() { Uid = result.Id, Role = "学生" }); result.Token = token; } return new MessageModel() { success = result.Status == 1, msg = result.Status == 1 ? "修改成功" : "修改失败", response = result }; } /// /// 完善用户信息 /// /// /// [HttpPost] public async Task> UpdateCustomer([FromBody]CustomerUpdateQuery query) { var result = await _services.UpdateCustomer(query); if (result.Id > 0) { var token = JwtHelper.IssueJwt(new TokenModelJwt() { Uid = result.Id, Role = "学生" }); result.Token = token; } return new MessageModel() { success = result.Status == 1, msg = result.Status == 1 ? "成功" : "失败", response = result }; } /// /// 修改用户头像与名称 /// /// /// [HttpPost] public async Task> UpdateCustomerAvatarUrl(UpdateCustomerQuery query) { var result = await _services.UpdateCustomerInfo(query); if (result.Id > 0) { var token = JwtHelper.IssueJwt(new TokenModelJwt() { Uid = result.Id, Role = "学生" }); result.Token = token; } return new MessageModel() { success = result.Status == 1, msg = result.Status == 1 ? "成功" : "失败", response = result }; } /// /// 根绝Id获取用户信息 /// /// /// [HttpGet] public async Task> GetCustomerInfoById([FromQuery] IdQuery query) { return await _services.GetCustomerInfoById(query); } } }