feat:调整登录接口逻辑

develop
old易 2023-09-18 17:35:38 +08:00
parent 9c8cd9c151
commit 704ca53bc0
11 changed files with 197 additions and 9 deletions

View File

@ -1,15 +1,20 @@
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
{
@ -32,7 +37,7 @@ namespace New_College.Api.Controllers.Front
/// <returns></returns>
[HttpPost]
[AllowAnonymous]
public MessageModel<CustomerInfoResult> GetWeixinAuthinfo(WeixinLogin login)
public MessageModel<CustomerInfoResult> GetWxOpenId(WeixinLogin login)
{
var response = new CustomerInfoResult();
try
@ -82,7 +87,28 @@ namespace New_College.Api.Controllers.Front
}
[AllowAnonymous]
[DisplayName("获取微信用户电话号码")]
public async Task<MessageModel<string>> 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<string>()
{
msg = result ? "修改成功" : "保存失败",
response = repUserPhoneNumber.phone_info.phoneNumber,
success = result ? true : false,
};
}
/// <summary>

View File

@ -86,6 +86,9 @@
<None Update="Dockerfile">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="start.sh">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup>
<ProjectExtensions><VisualStudio><UserProperties appsettings_1json__JsonSchema="" /></VisualStudio></ProjectExtensions>

View File

@ -108,7 +108,7 @@
</summary>
<returns></returns>
</member>
<member name="M:New_College.Api.Controllers.Front.CustomerController.GetWeixinAuthinfo(New_College.Model.WeixinLogin)">
<member name="M:New_College.Api.Controllers.Front.CustomerController.GetWxOpenId(New_College.Model.WeixinLogin)">
<summary>
获取微信openid
</summary>

View File

@ -1,11 +1,11 @@
{
"Weixin": {
"Appid": "wx6d433f70416c37d4",
"Secret": "d7cb43cd2546f04f87c04d6ffd5fa9be",
"Appid": "wx05e75004e657527c",
"Secret": "9383aa5517e1d6bf23404dce9c86b0f1",
//MCHID
"MCHID": "1600580140",
"MCHID": "1614987630",
//MCHKey
"KEY": "sa6328ahwqiuyoa923zaswq7ed021mns",
"KEY": "brapuk6fon0wachiMlth2t3lb4a0h7ji",
//NotifyUrl
"NotifyUrl": "http://*:8082/api/WeixinPay/PayNotify"
},

23
New_College.Api/start.sh Normal file
View File

@ -0,0 +1,23 @@
#! /bin/bash
echo "newcollage-api..."
sleep 3
docker stop newcollage-api
sleep 2
docker rm newcollage-api
docker rmi newcollage-api
echo ""
echo "newcollage-api packing..."
sleep 3
docker build -t newcollage-api .
echo ""
echo "newcollage-api running..."
sleep 3
docker run \
-p 8083:8083 \
--name newcollage-api \
-d newcollage-api

View File

@ -3,7 +3,9 @@ using System.Collections.Generic;
using System.Net.Http;
using System.Security.Cryptography;
using System.Text;
using Essensoft.AspNetCore.Payment.Alipay.Domain;
using Newtonsoft.Json;
using NPOI.SS.Formula.Functions;
namespace New_College.Common
{
@ -42,6 +44,68 @@ namespace New_College.Common
}
/// <summary>
/// 获取AccessToken
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="appid"></param>
/// <param name="secret"></param>
/// <returns></returns>
public static T GetAccessToken<T>(string appid, string secret) where T : new()
{
var authinfo = new T();
try
{
string requestUri = string.Format("https://api.weixin.qq.com/cgi-bin/token?appid={0}&secret={1}&grant_type=client_credential", appid, secret);
var httpClientHandler = new HttpClientHandler
{
ServerCertificateCustomValidationCallback = (message, certificate2, arg3, arg4) => true
};
using (HttpClient httpClient = new HttpClient(httpClientHandler))
{
var responseStr = httpClient.GetAsync(requestUri).Result.Content.ReadAsStringAsync().Result;
var obj = JsonConvert.DeserializeObject<T>(responseStr);
return obj;
}
}
catch (Exception ex)
{
throw ex;
}
}
public static T WxaBusinessGetUserPhoneNumber<T>(string access_token, string code) where T : new()
{
var authinfo = new T();
try
{
string requestUri = string.Format("https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token={0}", access_token);
var httpClientHandler = new HttpClientHandler
{
ServerCertificateCustomValidationCallback = (message, certificate2, arg3, arg4) => true
};
using (HttpClient httpClient = new HttpClient(httpClientHandler))
{
var content = new StringContent(Newtonsoft.Json.JsonConvert.SerializeObject(new WxaBusinessModel() { code = code }), Encoding.UTF8, "application/json");
var responseStr = httpClient.PostAsync(requestUri, content).Result.Content.ReadAsStringAsync().Result;
var obj = JsonConvert.DeserializeObject<T>(responseStr);
return obj;
}
}
catch (Exception ex)
{
throw ex;
}
}
private class WxaBusinessModel
{
public string code { get; set; }
}
/**
*
*

View File

@ -40,6 +40,10 @@ namespace New_College.IServices
Weixinauthinfo AuthCode2Session(string Code);
Access_Token access_Token();
WxaBusinessGetUserPhoneNumberResponse WxaBusinessGetUserPhoneNumber(WxaBusinessGetUserPhoneNumberRequest request);
string GetWeixinPhone(GetPhoneInfo phoneInfo);
Task<Tuple<bool, CustomerInfoResult>> Logined(LoginQuery query);

View File

@ -22,4 +22,12 @@ namespace New_College.Model.Request
public string AreaName { get; set; }
}
public class DecryptUserPhoneRequest
{
public string openId { get; set; }
public string code { get; set; }
}
}

View File

@ -14,6 +14,48 @@ namespace New_College.Model
}
public class Access_Token
{
public string access_token { get; set; }
public int expires_in { get; set; }
}
public class WxaBusinessGetUserPhoneNumberResponse
{
public int errcode { get; set; }
public string errmsg { get; set; }
public Phone_Info phone_info { get; set; }
}
public class WxaBusinessGetUserPhoneNumberRequest
{
public string access_Token { get; set; }
public string code { get; set; }
}
public class Phone_Info
{
public string phoneNumber { get; set; }
public string purePhoneNumber { get; set; }
public int countryCode { get; set; }
public Watermark watermark { get; set; }
}
public class Watermark
{
public int timestamp { get; set; }
public string appid { get; set; }
}
public class GetPhoneInfo
{
public string encryptedData { get; set; }

View File

@ -168,7 +168,7 @@ namespace New_College.Services
{
var majorcategories = (await d_MajorCategoryRepository.Query(x => x.Type == query.SchoolLevel && x.IsDelete == false)).Select(x => new uniMajorSelect() { Id = x.Id, Name = x.Name }); ;
var majorclasses = (await d_MajorClassRepository.Query(x => x.IsDelete == false)).Select(x => new uniMajorClassSelect() { Id = x.Id, Name = x.Name, TradeId = x.TradeId });
var majorinfo = (await d_MajorRepository.Query(x => x.IsDelete == false)).Select(s => new uniMajorSelect() { Id = s.CategoryClass_Id, Name = s.Name }).ToList();
var majorinfo = (await d_MajorRepository.Query(x => x.IsDelete == false&&x.Type!=3)).Select(s => new uniMajorSelect() { Id = s.CategoryClass_Id, Name = s.Name }).ToList();
List<uniMajorInfoResult> list = new List<uniMajorInfoResult>() { };
foreach (var item in majorcategories)
{
@ -565,7 +565,7 @@ namespace New_College.Services
{
var majorclasses = (await d_MajorClassRepository.Query(x => x.IsDelete == false)).Select(x => new uniMajorClassSelect() { Id = x.Id, Name = x.Name, TradeId = x.TradeId });
var nowmajorname = majorclasses.Where(x => x.Id == query.categoryclassid).Select(x => x.Name)?.FirstOrDefault();
var newmajorinfo = await d_MajorRepository.Query(x => x.IsDelete == false && x.CategoryClass_Id == query.categoryclassid);
var newmajorinfo = await d_MajorRepository.Query(x => x.IsDelete == false && x.CategoryClass_Id == query.categoryclassid && x.Type != 3);
info = newmajorinfo.Where(x => x.Name != nowmajorname).Select(x => new uniMajorInfo() { Id = x.Id, Name = x.MajorName }).ToList();
}
return new MessageModel<List<uniMajorInfo>>()

View File

@ -295,6 +295,24 @@ namespace New_College.Services
}
/// <summary>
/// 获取accesstoken
/// </summary>
/// <returns></returns>
public Access_Token access_Token()
{
return WeixinHelper.GetAccessToken<Access_Token>(WeixinConfig.Appid, WeixinConfig.Secret);
}
/// <summary>
///
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
public WxaBusinessGetUserPhoneNumberResponse WxaBusinessGetUserPhoneNumber(WxaBusinessGetUserPhoneNumberRequest request)
{
return WeixinHelper.WxaBusinessGetUserPhoneNumber<WxaBusinessGetUserPhoneNumberResponse>(request.access_Token, request.code);
}
public string GetWeixinPhone(GetPhoneInfo phoneInfo)
{
string phone = string.Empty;