Skip to content

Commit

Permalink
初步重构
Browse files Browse the repository at this point in the history
  • Loading branch information
codelove1314 committed Aug 8, 2021
1 parent 646e4b7 commit 8ab0ea9
Show file tree
Hide file tree
Showing 39 changed files with 252 additions and 76 deletions.
20 changes: 19 additions & 1 deletion Magicodes.Wx.Sdk.sln
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,15 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Magicodes.Wx.PublicAccount.
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Magicodes.Wx.PublicAccount.Sdk.Abp", "src\Magicodes.Wx.PublicAccount.Sdk.Abp\Magicodes.Wx.PublicAccount.Sdk.Abp.csproj", "{28701632-7434-4CC2-89AB-4C6D1F631776}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Magicodes.Wx.PublicAccount.Sdk.AspNet.Test", "tests\Magicodes.Wx.PublicAccount.Sdk.AspNet.Test\Magicodes.Wx.PublicAccount.Sdk.AspNet.Test.csproj", "{3A8362C4-9E10-403B-A67A-3322B15CEE08}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Magicodes.Wx.PublicAccount.Sdk.AspNet.Test", "tests\Magicodes.Wx.PublicAccount.Sdk.AspNet.Test\Magicodes.Wx.PublicAccount.Sdk.AspNet.Test.csproj", "{3A8362C4-9E10-403B-A67A-3322B15CEE08}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "1.Core", "1.Core", "{F02630E1-C00F-405D-AA04-AA6A692315BE}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Magicodes.Wx.Sdk.Core", "src\Magicodes.Wx.Sdk.Core\Magicodes.Wx.Sdk.Core.csproj", "{B673D4D8-CBD3-459A-A28E-CBCC66C090FB}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "EnterpriseWeChat", "EnterpriseWeChat", "{5CAA87A9-B3D1-4322-8F38-586676389E7A}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Magicodes.Wx.Enterprise.Sdk", "src\Magicodes.Wx.Enterprise.Sdk\Magicodes.Wx.Enterprise.Sdk.csproj", "{0D37EFC3-C9DD-411E-887B-0DBA62CCF90D}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Expand Down Expand Up @@ -51,6 +59,14 @@ Global
{3A8362C4-9E10-403B-A67A-3322B15CEE08}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3A8362C4-9E10-403B-A67A-3322B15CEE08}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3A8362C4-9E10-403B-A67A-3322B15CEE08}.Release|Any CPU.Build.0 = Release|Any CPU
{B673D4D8-CBD3-459A-A28E-CBCC66C090FB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B673D4D8-CBD3-459A-A28E-CBCC66C090FB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B673D4D8-CBD3-459A-A28E-CBCC66C090FB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B673D4D8-CBD3-459A-A28E-CBCC66C090FB}.Release|Any CPU.Build.0 = Release|Any CPU
{0D37EFC3-C9DD-411E-887B-0DBA62CCF90D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0D37EFC3-C9DD-411E-887B-0DBA62CCF90D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0D37EFC3-C9DD-411E-887B-0DBA62CCF90D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0D37EFC3-C9DD-411E-887B-0DBA62CCF90D}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand All @@ -61,6 +77,8 @@ Global
{F6098294-2CAC-4320-8AA4-4FA95079BD3F} = {21B20DAF-56D3-414B-91FE-DD0D176A5277}
{28701632-7434-4CC2-89AB-4C6D1F631776} = {8F81A401-76DB-4F52-A8E1-CEEE6D45DA2A}
{3A8362C4-9E10-403B-A67A-3322B15CEE08} = {21B20DAF-56D3-414B-91FE-DD0D176A5277}
{B673D4D8-CBD3-459A-A28E-CBCC66C090FB} = {F02630E1-C00F-405D-AA04-AA6A692315BE}
{0D37EFC3-C9DD-411E-887B-0DBA62CCF90D} = {5CAA87A9-B3D1-4322-8F38-586676389E7A}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {EC173392-7AB2-4DB8-8FAF-D9ED2201A2B3}
Expand Down
2 changes: 1 addition & 1 deletion common.props
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<Project>
<PropertyGroup>
<Version>0.2.6</Version>
<Version>0.2.7</Version>
</PropertyGroup>
<PropertyGroup>
<Authors>雪雁</Authors>
Expand Down
41 changes: 41 additions & 0 deletions src/Magicodes.Wx.Enterprise.Sdk/Apis/ApiResultBase.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
using Newtonsoft.Json;

namespace Magicodes.Wx.Enterprise.Sdk.Apis
{
/// <summary>
/// API请求结果
/// {"errcode":40164,"errmsg":"invalid ip 218.76.8.29 ipv6 ::ffff:218.76.8.29, not in whitelist rid: 60122c35-705c3134-51b45a3d"}
/// </summary>
public class ApiResultBase
{
/// <summary>
/// 返回码
/// </summary>
[JsonProperty("errcode")]
public virtual ReturnCodes ReturnCode { get; set; }

/// <summary>
/// 错误消息
/// </summary>
[JsonProperty("errmsg")]
public virtual string Message { get; set; }

/// <summary>
/// 是否为成功返回
/// </summary>
/// <returns></returns>
public virtual bool IsSuccess()
{
return ReturnCode == ReturnCodes.请求成功;
}

/// <summary>
/// 获取友好提示
/// </summary>
/// <returns></returns>
public virtual string GetFriendlyMessage()
{
return ReturnCode.ToString();
}
}
}
12 changes: 12 additions & 0 deletions src/Magicodes.Wx.Enterprise.Sdk/Apis/ReturnCodes.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
namespace Magicodes.Wx.Enterprise.Sdk.Apis
{
/// <summary>
/// 公众号返回码(JSON)
/// </summary>
public enum ReturnCodes
{
系统繁忙此时请开发者稍候再试 = -1,
请求成功 = 0,

}
}
25 changes: 25 additions & 0 deletions src/Magicodes.Wx.Enterprise.Sdk/Apis/Token/Dtos/TokenApiResult.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
using Newtonsoft.Json;
using System;

namespace Magicodes.Wx.Enterprise.Sdk.Apis.Token.Dtos
{
public class TokenApiResult : ApiResultBase
{
/// <summary>
/// 获取到的凭证
/// </summary>
[JsonProperty("access_token")]
public string AccessToken { get; set; }

/// <summary>
/// 凭证有效时间,单位:秒。正常情况下为7200秒(2小时)
/// </summary>
[JsonProperty("expires_in")]
internal int Expires { get; set; }

/// <summary>
/// 凭证过期时间
/// </summary>
public DateTime ExpiresTime { get; set; }
}
}
21 changes: 21 additions & 0 deletions src/Magicodes.Wx.Enterprise.Sdk/Apis/Token/ITokenApi.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
using Magicodes.Wx.Enterprise.Sdk.Apis.Token.Dtos;
using Magicodes.Wx.Sdk.Core;
using System.ComponentModel.DataAnnotations;
using System.Threading.Tasks;
using WebApiClientCore.Attributes;

namespace Magicodes.Wx.Enterprise.Sdk.Apis.Token
{
[HttpHost("https://qyapi.weixin.qq.com/cgi-bin/")]
public interface ITokenApi : IWxApiBase
{
/// <summary>
/// 获取access_token
/// </summary>
/// <param name="corpid">企业ID,获取方式参考:术语说明-corpid</param>
/// <param name="corpsecret">应用的凭证密钥,获取方式参考:术语说明-secret</param>
/// <returns></returns>
[HttpGet("gettoken")]
Task<TokenApiResult> GetAsync([Required] string corpid, [Required] string corpsecret);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\..\common.props"></Import>
<PropertyGroup>
<TargetFramework>netstandard2.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\Magicodes.Wx.Sdk.Core\Magicodes.Wx.Sdk.Core.csproj" />
</ItemGroup>
</Project>
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
using Magicodes.Wx.PublicAccount.Sdk.AspNet;
using Magicodes.Wx.PublicAccount.Sdk.Config;
using Magicodes.Wx.Sdk.Core.Helper;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using System;
Expand Down Expand Up @@ -45,7 +47,7 @@ public override void OnApplicationInitialization(ApplicationInitializationContex
else
{
IConfiguration config = app.ApplicationServices.GetRequiredService<IConfiguration>();
return WxHelper.GetWeChatOptionsByConfiguration(config);
return ConfigHelper.GetWeChatOptionsByConfiguration(config);
}
};
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@

namespace Magicodes.Wx.PublicAccount.Sdk.AspNet.ServerMessages.From
{
using Magicodes.Wx.PublicAccount.Sdk.Helper;
using Magicodes.Wx.Sdk.Core.Helper;
using System;
using System.Xml.Serialization;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@

namespace Magicodes.Wx.PublicAccount.Sdk.AspNet.ServerMessages.From
{
using Magicodes.Wx.PublicAccount.Sdk.Helper;
using Magicodes.Wx.Sdk.Core.Helper;
using System;
using System.Xml.Serialization;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ namespace Magicodes.Wx.PublicAccount.Sdk.AspNet.ServerMessages
{
using Magicodes.Wx.PublicAccount.Sdk.AspNet.ServerMessages.From;
using Magicodes.Wx.PublicAccount.Sdk.AspNet.ServerMessages.To;
using Magicodes.Wx.PublicAccount.Sdk.Helper;
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
Expand All @@ -27,6 +26,7 @@ namespace Magicodes.Wx.PublicAccount.Sdk.AspNet.ServerMessages
using System.Threading.Tasks;
using System.Xml.Linq;
using Microsoft.Extensions.DependencyInjection;
using Magicodes.Wx.Sdk.Core.Helper;

/// <summary>
/// 服务器消息处理类
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
namespace Magicodes.Wx.PublicAccount.Sdk.AspNet.ServerMessages
{
using Magicodes.Wx.PublicAccount.Sdk.AspNet.ServerMessages.To;
using Magicodes.Wx.PublicAccount.Sdk.Helper;
using Magicodes.Wx.Sdk.Core.Helper;

/// <summary>
/// 发送消息扩展
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using Magicodes.Wx.PublicAccount.Sdk.Apis.Sns;
using Magicodes.Wx.Sdk.Core.Helper;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Http.Extensions;
Expand All @@ -7,6 +8,7 @@
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using System;
using System.Text.Encodings.Web;
using System.Threading.Tasks;

namespace Magicodes.Wx.PublicAccount.Sdk.AspNet
Expand Down Expand Up @@ -105,7 +107,7 @@ public async Task OnAuthorizationAsync(AuthorizationFilterContext context)
WxFuncs weChatFuncs = serviceProvider.GetRequiredService<WxFuncs>();
WxPublicAccountOption option = weChatFuncs.GetWeChatOptions();
//获取授权Url
string url = WxHelper.GetAuthorizeUrl(redirectUrl, _state, option.AppId, OAuthLevel == OAuthLevels.OpenIdAndUserInfo ? OAuthScopes.snsapi_userinfo : OAuthScopes.snsapi_base);
string url = GetAuthorizeUrl(redirectUrl, _state, option.AppId, OAuthLevel == OAuthLevels.OpenIdAndUserInfo ? OAuthScopes.snsapi_userinfo : OAuthScopes.snsapi_base);
logger.LogDebug($"跳转至微信服务器获取授权...{Environment.NewLine}RedirectUrl:{redirectUrl}{Environment.NewLine}AuthUrl:{url}");
context.Result = new RedirectResult(url);
}
Expand All @@ -115,5 +117,22 @@ public async Task OnAuthorizationAsync(AuthorizationFilterContext context)
context.Result = new ContentResult { Content = "授权出错,请检查!" };
}
}

/// <summary>
/// 获取网页授权链接
/// </summary>
/// <param name="redirectUrl">授权后重定向的回调链接地址,请使用urlencode对链接进行处理</param>
/// <param name="state">重定向后会带上state参数,开发者可以填写a-zA-Z0-9的参数值,最多128字节</param>
/// <param name="appid"></param>
/// <param name="scope">
/// 应用授权作用域
/// snsapi_base (不弹出授权页面,直接跳转,只能获取用户openid),
/// snsapi_userinfo(弹出授权页面,可通过openid拿到昵称、性别、所在地。并且,即使在未关注的情况下,只要用户授权,也能获取其信息)
/// </param>
/// <returns></returns>
private static string GetAuthorizeUrl(string redirectUrl, string state, string appid, OAuthScopes scope = OAuthScopes.snsapi_userinfo)
{
return $"https://open.weixin.qq.com/connect/oauth2/authorize?appid={appid}&redirect_uri={UrlEncoder.Default.Encode(redirectUrl)}&response_type=code&scope={scope}&state={state}#wechat_redirect";
}
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System.ComponentModel.DataAnnotations;
using Magicodes.Wx.Sdk.Core;
using System.ComponentModel.DataAnnotations;
using System.Threading.Tasks;
using WebApiClientCore.Attributes;
using WebApiClientCore.Parameters;
Expand Down
1 change: 1 addition & 0 deletions src/Magicodes.Wx.PublicAccount.Sdk/Apis/Guide/IGuideApi.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using Magicodes.Wx.PublicAccount.Sdk.Apis.Guide.Dtos;
using Magicodes.Wx.Sdk.Core;
using System.Threading.Tasks;
using WebApiClientCore.Attributes;

Expand Down
3 changes: 2 additions & 1 deletion src/Magicodes.Wx.PublicAccount.Sdk/Apis/Media/IMediaApi.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System.ComponentModel.DataAnnotations;
using Magicodes.Wx.Sdk.Core;
using System.ComponentModel.DataAnnotations;
using System.Threading.Tasks;
using WebApiClientCore.Attributes;
using WebApiClientCore.Parameters;
Expand Down
1 change: 1 addition & 0 deletions src/Magicodes.Wx.PublicAccount.Sdk/Apis/Menu/IMenuApi.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using Magicodes.Wx.PublicAccount.Sdk.Apis.Menu.Dtos;
using Magicodes.Wx.Sdk.Core;
using System.Threading.Tasks;
using WebApiClientCore.Attributes;

Expand Down
3 changes: 2 additions & 1 deletion src/Magicodes.Wx.PublicAccount.Sdk/Apis/Message/IMassApi.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System;
using Magicodes.Wx.Sdk.Core;
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System.Threading.Tasks;
using Magicodes.Wx.Sdk.Core;
using System.Threading.Tasks;
using WebApiClientCore.Attributes;

namespace Magicodes.Wx.PublicAccount.Sdk.Apis.Message
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using Magicodes.Wx.PublicAccount.Sdk.Apis.NewTmpl.Dtos;
using Magicodes.Wx.Sdk.Core;
using System.Threading.Tasks;
using WebApiClientCore.Attributes;

Expand Down
3 changes: 2 additions & 1 deletion src/Magicodes.Wx.PublicAccount.Sdk/Apis/Sns/IOauth2Api.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System.ComponentModel.DataAnnotations;
using Magicodes.Wx.Sdk.Core;
using System.ComponentModel.DataAnnotations;
using System.Threading.Tasks;
using WebApiClientCore.Attributes;

Expand Down
3 changes: 2 additions & 1 deletion src/Magicodes.Wx.PublicAccount.Sdk/Apis/Sns/ISnsApi.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System.Threading.Tasks;
using Magicodes.Wx.Sdk.Core;
using System.Threading.Tasks;
using WebApiClientCore.Attributes;

namespace Magicodes.Wx.PublicAccount.Sdk.Apis.Sns
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using Magicodes.Wx.PublicAccount.Sdk.Apis.Ticket.Dtos;
using Magicodes.Wx.Sdk.Core;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
Expand Down
3 changes: 2 additions & 1 deletion src/Magicodes.Wx.PublicAccount.Sdk/Apis/Token/ITokenApi.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System.ComponentModel.DataAnnotations;
using Magicodes.Wx.Sdk.Core;
using System.ComponentModel.DataAnnotations;
using System.Threading.Tasks;
using WebApiClientCore.Attributes;

Expand Down
1 change: 1 addition & 0 deletions src/Magicodes.Wx.PublicAccount.Sdk/Apis/User/ITagsApi.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using Magicodes.Wx.PublicAccount.Sdk.Apis.User.Dtos;
using Magicodes.Wx.Sdk.Core;
using System.Threading.Tasks;
using WebApiClientCore.Attributes;

Expand Down
1 change: 1 addition & 0 deletions src/Magicodes.Wx.PublicAccount.Sdk/Apis/User/IUserApi.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using Magicodes.Wx.PublicAccount.Sdk.Apis.User.Dtos;
using Magicodes.Wx.Sdk.Core;
using Newtonsoft.Json;
using System.Threading.Tasks;
using WebApiClientCore.Attributes;
Expand Down
27 changes: 27 additions & 0 deletions src/Magicodes.Wx.PublicAccount.Sdk/Config/ConfigHelper.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
using Microsoft.Extensions.Configuration;
using System;
using System.Collections.Generic;
using System.Text;

namespace Magicodes.Wx.PublicAccount.Sdk.Config
{
public class ConfigHelper
{
/// <summary>
///
/// </summary>
/// <param name="configuration"></param>
public static WxPublicAccountOption GetWeChatOptionsByConfiguration(IConfiguration configuration)
{
IConfigurationSection wechatConfig = configuration.GetSection(WxConsts.WX_CONFIG_SECTION_KEY);
if (wechatConfig == null) return null;
return new WxPublicAccountOption()
{
AppId = wechatConfig["AppId"],
AppSecret = wechatConfig["AppSecret"],
Token = wechatConfig["Token"],
WeiXinAccount = wechatConfig["WeiXinAccount"],
};
}
}
}
Loading

0 comments on commit 8ab0ea9

Please sign in to comment.