Browse Source

增加审批消息

master
yashen 9 years ago
parent
commit
e427a355a6
16 changed files with 510 additions and 44 deletions
  1. +51
    -19
      B3WeChat.Web/B3WeChat.Web.csproj
  2. +38
    -0
      B3WeChat.Web/Pages/WeiChatLogin.cs
  3. +4
    -0
      B3WeChat.Web/PluginClass.cs
  4. +55
    -20
      B3WeChat/B3WeChat.csproj
  5. +11
    -0
      B3WeChat/B3WeChatConsts.cs
  6. +44
    -0
      B3WeChat/BL/IApproveMessageBL.cs
  7. +44
    -0
      B3WeChat/BL/ICustomerUserBL.cs
  8. +52
    -0
      B3WeChat/BO/ApproveMessage.cs
  9. +20
    -5
      B3WeChat/BO/CustomerUser.cs
  10. +19
    -0
      B3WeChat/BO/NamedValueTemplate.cs
  11. +54
    -0
      B3WeChat/Rpcs/ApproveMessageRpc.cs
  12. +1
    -0
      B3WeChat/Rpcs/ClientRpc.cs
  13. +41
    -0
      B3WeChat/Utils/WeChatPageUtil.cs
  14. +22
    -0
      B3WeChat/WeiChatObjs/AuthorizationCodeResponse.cs
  15. +44
    -0
      B3WeChat/WeiChatObjs/BaseResponse.cs
  16. +10
    -0
      WebFolder/config/NamedValue/B3WeChat.xml

+ 51
- 19
B3WeChat.Web/B3WeChat.Web.csproj View File

@ -11,7 +11,8 @@
<AssemblyName>B3WeChat.Web</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<KeyContainerName>BwpApp</KeyContainerName></PropertyGroup>
<KeyContainerName>BwpApp</KeyContainerName>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
@ -33,43 +34,73 @@
<Reference Include="Forks.EnterpriseServices, Version=3.1.0.0, Culture=neutral, PublicKeyToken=7254430f49d10aae, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\tsref\Debug\Forks.EnterpriseServices.dll</HintPath>
<Private>False</Private></Reference>
<Private>False</Private>
</Reference>
<Reference Include="Forks.Utils, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7254430f49d10aae, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\tsref\Debug\Forks.Utils.dll</HintPath>
<Private>False</Private></Reference>
<Private>False</Private>
</Reference>
<Reference Include="MainSystem, Version=1.3.0.0, Culture=neutral, PublicKeyToken=a04fa581c0f74d43, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\tsref\Debug\MainSystem.dll</HintPath>
<Private>False</Private></Reference>
<Private>False</Private>
</Reference>
<Reference Include="MainSystem.Web, Version=1.3.0.0, Culture=neutral, PublicKeyToken=a04fa581c0f74d43, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\tsref\Debug\MainSystem.Web.dll</HintPath>
<Private>False</Private></Reference>
<Reference Include="System"><SpecificVersion>False</SpecificVersion></Reference>
<Reference Include="System.Core"><SpecificVersion>False</SpecificVersion></Reference>
<Reference Include="System.Runtime.Serialization"><SpecificVersion>False</SpecificVersion></Reference>
<Reference Include="System.Web"><SpecificVersion>False</SpecificVersion></Reference>
<Reference Include="System.Web.Extensions"><SpecificVersion>False</SpecificVersion></Reference>
<Reference Include="System.Xml.Linq"><SpecificVersion>False</SpecificVersion></Reference>
<Reference Include="Microsoft.CSharp"><SpecificVersion>False</SpecificVersion><Private>False</Private></Reference>
<Reference Include="System.Data"><SpecificVersion>False</SpecificVersion></Reference>
<Reference Include="System.Xml"><SpecificVersion>False</SpecificVersion></Reference>
<Private>False</Private>
</Reference>
<Reference Include="System">
<SpecificVersion>False</SpecificVersion>
</Reference>
<Reference Include="System.Core">
<SpecificVersion>False</SpecificVersion>
</Reference>
<Reference Include="System.Runtime.Serialization">
<SpecificVersion>False</SpecificVersion>
</Reference>
<Reference Include="System.Web">
<SpecificVersion>False</SpecificVersion>
</Reference>
<Reference Include="System.Web.Extensions">
<SpecificVersion>False</SpecificVersion>
</Reference>
<Reference Include="System.Xml.Linq">
<SpecificVersion>False</SpecificVersion>
</Reference>
<Reference Include="Microsoft.CSharp">
<SpecificVersion>False</SpecificVersion>
<Private>False</Private>
</Reference>
<Reference Include="System.Data">
<SpecificVersion>False</SpecificVersion>
</Reference>
<Reference Include="System.Xml">
<SpecificVersion>False</SpecificVersion>
</Reference>
<Reference Include="Wpf, Version=1.3.0.0, Culture=neutral, PublicKeyToken=a04fa581c0f74d43, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\tsref\Debug\Wpf.dll</HintPath>
<Private>False</Private></Reference>
<Private>False</Private>
</Reference>
<Reference Include="Wpf.System, Version=1.3.0.0, Culture=neutral, PublicKeyToken=a04fa581c0f74d43, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\tsref\Debug\Wpf.System.dll</HintPath>
<Private>False</Private></Reference>
<Private>False</Private>
</Reference>
<Reference Include="Wpf.System.Web, Version=1.3.0.0, Culture=neutral, PublicKeyToken=a04fa581c0f74d43, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\tsref\Debug\Wpf.System.Web.dll</HintPath>
<Private>False</Private></Reference>
<Private>False</Private>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="..\..\..\version\Misc_version.cs"><Link>Misc_version.cs</Link></Compile><Compile Include="Pages\WeChatReceive.cs" />
<Compile Include="..\..\..\version\Misc_version.cs">
<Link>Misc_version.cs</Link>
</Compile>
<Compile Include="Pages\WeChatReceive.cs" />
<Compile Include="Pages\WeiChatLogin.cs" />
<Compile Include="PluginClass.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
@ -77,7 +108,8 @@
<ProjectReference Include="..\B3WeChat\B3WeChat.csproj">
<Project>{9e680662-8323-494f-8140-237db0a9f0d9}</Project>
<Name>B3WeChat</Name>
<Private>False</Private></ProjectReference>
<Private>False</Private>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.


+ 38
- 0
B3WeChat.Web/Pages/WeiChatLogin.cs View File

@ -0,0 +1,38 @@
using Bwp.MainSystem;
using BWP.B3WeChat.Utils;
using Forks.EnterpriseServices.BusinessInterfaces;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using TSingSoft.WebPluginFramework;
namespace BWP.Web.Pages
{
class WeiChatLogin:IHttpHandler
{
public bool IsReusable
{
get { return true; }
}
public void ProcessRequest(HttpContext context)
{
var code = context.Request.QueryString["code"];
var openID = WeChatPageUtil.QueryOpenID(code);
var userBL = BIFactory.Create<IUserBL>();
var user = userBL.Get(openID);
if (user == null)
{
throw new Exception("当前微信公众号用户还没有在系统中注册");
}
var url = context.Request.QueryString["url"];
context.Response.Redirect(url);
}
}
}

+ 4
- 0
B3WeChat.Web/PluginClass.cs View File

@ -12,6 +12,10 @@ namespace BWP.Web
public void OnInit()
{
CustomLogin.Register("WeChatReceive.aspx");
var roleSchemas = Wpf.Settings.RoleSchemas;
roleSchemas.Add(new RoleSchema("wechat", "微信公众号用户", RoleSchema.DefaultFunctions.Empty));
}
}
}

+ 55
- 20
B3WeChat/B3WeChat.csproj View File

@ -11,7 +11,8 @@
<AssemblyName>B3WeChat</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<KeyContainerName>BwpApp</KeyContainerName></PropertyGroup>
<KeyContainerName>BwpApp</KeyContainerName>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
@ -33,37 +34,69 @@
<Reference Include="Forks.EnterpriseServices, Version=3.1.0.0, Culture=neutral, PublicKeyToken=7254430f49d10aae, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\tsref\Debug\Forks.EnterpriseServices.dll</HintPath>
<Private>False</Private></Reference>
<Private>False</Private>
</Reference>
<Reference Include="Forks.Utils, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7254430f49d10aae, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\tsref\Debug\Forks.Utils.dll</HintPath>
<Private>False</Private></Reference>
<Private>False</Private>
</Reference>
<Reference Include="MainSystem, Version=1.3.0.0, Culture=neutral, PublicKeyToken=a04fa581c0f74d43, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\tsref\Debug\MainSystem.dll</HintPath>
<Private>False</Private></Reference>
<Reference Include="System"><SpecificVersion>False</SpecificVersion></Reference>
<Reference Include="System.Core"><SpecificVersion>False</SpecificVersion></Reference>
<Reference Include="System.Web"><SpecificVersion>False</SpecificVersion></Reference>
<Reference Include="System.Web.Extensions"><SpecificVersion>False</SpecificVersion></Reference>
<Reference Include="System.Xml.Linq"><SpecificVersion>False</SpecificVersion></Reference>
<Reference Include="System.Data.DataSetExtensions"><SpecificVersion>False</SpecificVersion></Reference>
<Reference Include="Microsoft.CSharp"><SpecificVersion>False</SpecificVersion><Private>False</Private></Reference>
<Reference Include="System.Data"><SpecificVersion>False</SpecificVersion></Reference>
<Reference Include="System.Xml"><SpecificVersion>False</SpecificVersion></Reference>
<Private>False</Private>
</Reference>
<Reference Include="System">
<SpecificVersion>False</SpecificVersion>
</Reference>
<Reference Include="System.Core">
<SpecificVersion>False</SpecificVersion>
</Reference>
<Reference Include="System.Web">
<SpecificVersion>False</SpecificVersion>
</Reference>
<Reference Include="System.Web.Extensions">
<SpecificVersion>False</SpecificVersion>
</Reference>
<Reference Include="System.Xml.Linq">
<SpecificVersion>False</SpecificVersion>
</Reference>
<Reference Include="System.Data.DataSetExtensions">
<SpecificVersion>False</SpecificVersion>
</Reference>
<Reference Include="Microsoft.CSharp">
<SpecificVersion>False</SpecificVersion>
<Private>False</Private>
</Reference>
<Reference Include="System.Data">
<SpecificVersion>False</SpecificVersion>
</Reference>
<Reference Include="System.Xml">
<SpecificVersion>False</SpecificVersion>
</Reference>
<Reference Include="Wpf, Version=1.3.0.0, Culture=neutral, PublicKeyToken=a04fa581c0f74d43, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\tsref\Debug\Wpf.dll</HintPath>
<Private>False</Private></Reference>
<Private>False</Private>
</Reference>
<Reference Include="Wpf.System, Version=1.3.0.0, Culture=neutral, PublicKeyToken=a04fa581c0f74d43, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\tsref\Debug\Wpf.System.dll</HintPath>
<Private>False</Private></Reference>
<Private>False</Private>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="..\..\..\version\Misc_version.cs"><Link>Misc_version.cs</Link></Compile><Compile Include="B3WeChatConfig.cs" />
<Compile Include="BO\CustomerUser.cs" />
<Compile Include="..\..\..\version\Misc_version.cs">
<Link>Misc_version.cs</Link>
</Compile>
<Compile Include="B3WeChatConfig.cs" />
<Compile Include="B3WeChatConsts.cs" />
<Compile Include="BL\IApproveMessageBL.cs" />
<Compile Include="BL\ICustomerUserBL.cs" />
<Compile Include="BO\ApproveMessage.cs" />
<Compile Include="BO\NamedValueTemplate.cs" />
<Compile Include="BO\QRCodeScene.cs" />
<Compile Include="BO\CustomerUser.cs" />
<Compile Include="Entities\ErrorObject.cs" />
<Compile Include="Entities\EventType.cs" />
<Compile Include="Entities\MeassageBody.cs" />
@ -79,14 +112,16 @@
<Compile Include="Entities\UserBasicInfo.cs" />
<Compile Include="Entities\WeiChartServerList.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Rpcs\ApproveMessageRpc.cs" />
<Compile Include="Rpcs\ClientRpc.cs" />
<Compile Include="Utils\InOutMessageUtil.cs" />
<Compile Include="Utils\SendMessageUtil.cs" />
<Compile Include="Utils\WeChatPageUtil.cs" />
<Compile Include="Utils\XmlUtil.cs" />
<Compile Include="WeiChatObjs\AuthorizationCodeResponse.cs" />
<Compile Include="WeiChatObjs\BaseResponse.cs" />
</ItemGroup>
<ItemGroup>
<Folder Include="BL\" />
</ItemGroup>
<ItemGroup />
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.


+ 11
- 0
B3WeChat/B3WeChatConsts.cs View File

@ -0,0 +1,11 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace BWP.B3WeChat
{
public static class B3WeChatConsts
{
}
}

+ 44
- 0
B3WeChat/BL/IApproveMessageBL.cs View File

@ -0,0 +1,44 @@
using BWP.B3WeChat.BO;
using Forks.EnterpriseServices.BusinessInterfaces;
using Forks.EnterpriseServices.DomainObjects2.DQuery;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace BWP.B3WeChat.BL
{
[BusinessInterface(typeof(ApproveMessageBL))]
public interface IApproveMessageBL
{
void Insert(ApproveMessage message);
void Delete(string messageID);
}
public class ApproveMessageBL : BusinessClass, IApproveMessageBL
{
static Lazy<IApproveMessageBL> mInstance = new Lazy<IApproveMessageBL>(() => BIFactory.Create<IApproveMessageBL>());
public static IApproveMessageBL Instance
{
get
{
return mInstance.Value;
}
}
public void Insert(ApproveMessage message)
{
Session.Insert(message);
}
public void Delete(string messageID)
{
var del = new DQDeleteDom(typeof(ApproveMessage));
del.Where.Conditions.Add(DQCondition.EQ("ID", messageID));
Session.ExecuteNonQuery(del);
}
}
}

+ 44
- 0
B3WeChat/BL/ICustomerUserBL.cs View File

@ -0,0 +1,44 @@
using BWP.B3WeChat.BO;
using Forks.EnterpriseServices.BusinessInterfaces;
using Forks.EnterpriseServices.DomainObjects2.DQuery;
using Forks.Utils;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using TSingSoft.WebPluginFramework;
namespace BWP.B3WeChat.BL
{
[BusinessInterface(typeof(CustomerUserBL))]
public interface ICustomerUserBL
{
[Log(Disabled=true)]
void Follow(string customerCode, string username, string openID);
}
public class CustomerUserBL : BusinessClass, ICustomerUserBL
{
public void Follow(string customerCode, string customerUsername, string openID)
{
var del = new DQDeleteDom(typeof(CustomerUser));
del.Where.Conditions.Add(DQCondition.EQ("CustomerCode", customerCode));
del.Where.Conditions.Add(DQCondition.EQ("CustomerUsername", customerUsername));
var customerUser = new CustomerUser()
{
CustomerCode = customerCode,
CustomerUsername = customerUsername,
OpenID = openID
};
Session.Insert(customerUser);
var userBL = BIFactory.Create<IUserBL>(this);
if (userBL.Exist(openID))
{
userBL.Create(openID, StringUtil.CreateRandomString(30), "wechat", customerCode + "/" + customerUsername);
}
}
}
}

+ 52
- 0
B3WeChat/BO/ApproveMessage.cs View File

@ -0,0 +1,52 @@
using BWP.B3WeChat.BO.NamedValueTemplate;
using Forks.EnterpriseServices;
using Forks.EnterpriseServices.DataForm;
using Forks.EnterpriseServices.DomainObjects2;
using Forks.Utils;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using TSingSoft.WebPluginFramework;
namespace BWP.B3WeChat.BO
{
[LogicName("审批消息")]
[BOClass,DFClass]
[KeyField("ID",KeyGenType.assigned)]
public class ApproveMessage
{
/// <summary>
/// 消息ID,由客户端提交
/// </summary>
[DbColumn(AllowNull=false)]
public string ID { get; set; }
[LogicName("客户号")]
[DbColumn(AllowNull=false)]
public string CustomerCode { get; set; }
/// <summary>
/// 客户端用户名
/// </summary>
[LogicName("用户名")]
[DbColumn(AllowNull=false)]
public string Username { get; set; }
[DbColumn(Length=255)]
[LogicName("标题")]
public string Title { get; set; }
[DbColumn(Length=4000)]
[LogicName("正文")]
public string Content { get; set; }
[LogicName("审批结果")]
public NamedValue<> ApproveResult { get; set; }
[LogicName("审批意见")]
public string ApproveComment { get; set; }
}
}

+ 20
- 5
B3WeChat/BO/CustomerUser.cs View File

@ -1,15 +1,30 @@
using System;
using Forks.EnterpriseServices;
using Forks.EnterpriseServices.DomainObjects2;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace BWP.B3WeChat.BO
{
class CustomerUser
[LogicName("微信用户")]
[KeyField("CustomerCode", KeyGenType.assigned)]
[KeyField("CustomerUsername", KeyGenType.assigned)]
public class CustomerUser
{
public string CustomerNumber { get; set; }
public string Username { get; set; }
//加密后的微信号,同一个微信号在不同的公众号有不同的OpenID
//可能存在一个微信号在多个客户里关注的情况,另外同一个客户也可能和不同的用户名绑定
[DbColumn(AllowNull=false)]
public string OpenID { get; set; }
[LogicName("客户编码")]
[DbColumn(AllowNull=false)]
public string CustomerCode { get;set; }
[LogicName("客户用户名")]
[DbColumn(AllowNull=false)]
public string CustomerUsername { get; set; }
public string WeixinUsername { get; set; }
}
}

+ 19
- 0
B3WeChat/BO/NamedValueTemplate.cs View File

@ -0,0 +1,19 @@
using Forks.Utils;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace BWP.B3WeChat.BO.NamedValueTemplate
{
public sealed class
{
public static NamedValue<> = new NamedValue<>(0);
public static NamedValue<> = new NamedValue<>(10);
public static NamedValue<> 退 = new NamedValue<>(20);
/// <summary>
/// 审批消息本身没有已删除状态,只用来查询消息状态用
/// </summary>
public static NamedValue<> = new NamedValue<>(30);
}
}

+ 54
- 0
B3WeChat/Rpcs/ApproveMessageRpc.cs View File

@ -0,0 +1,54 @@
using BWP.B3WeChat.BL;
using BWP.B3WeChat.BO;
using BWP.B3WeChat.BO.NamedValueTemplate;
using Forks.EnterpriseServices.BusinessInterfaces;
using Forks.EnterpriseServices.DomainObjects2;
using Forks.EnterpriseServices.DomainObjects2.DQuery;
using Forks.EnterpriseServices.JsonRpc;
using Forks.EnterpriseServices.SqlDoms;
using Forks.Utils;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using TSingSoft.WebPluginFramework;
namespace BWP.B3WeChat.Rpcs
{
[Rpc]
public static class ApproveMessageRpc
{
static IApproveMessageBL bl = BIFactory.Create<IApproveMessageBL>();
[Rpc]
public static void Insert(ApproveMessage message)
{
ApproveMessageBL.Instance.Insert(message);
}
/// <summary>
/// 返回消息状态
/// </summary>
/// <param name="messageID"></param>
/// <returns></returns>
[Rpc]
public static short QueryMessageState(string messageID)
{
var query = new DQueryDom(new JoinAlias(typeof(ApproveMessage)));
query.Where.Conditions.Add(DQCondition.EQ("ID", messageID));
query.Columns.Add(DQSelectColumn.Field("ApproveResult"));
query.Range = SelectRange.Top(1);
var state = query.EExecuteScalar<NamedValue<>?>() ?? .;
return state.Value;
}
[Rpc]
public static void Delete(string messageID)
{
bl.Delete(messageID);
}
}
}

+ 1
- 0
B3WeChat/Rpcs/ClientRpc.cs View File

@ -19,6 +19,7 @@ namespace BWP.B3WeChat.Rpcs
public static class ClientRpc
{
static Logger logger = new Logger("ClientRpc");
static string GetDeviceNumber()


+ 41
- 0
B3WeChat/Utils/WeChatPageUtil.cs View File

@ -0,0 +1,41 @@
using BWP.B3WeChat.WeiChatObjs;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;
using System.Web;
using System.Web.Script.Serialization;
namespace BWP.B3WeChat.Utils
{
public static class WeChatPageUtil
{
const string template = "https://open.weixin.qq.com/connect/oauth2/authorize?appid={APPID}&redirect_uri={REDIRECT_URI}&response_type=code&scope=snsapi_base&state={STAT}&connect_redirect=1#wechat_redirect";
public static string GetWeChatUrl(string url,string state="1")
{
var config = new B3WeChatConfig();
var result = template.Replace("{APPID}", config.AppID)
.Replace("{REDIRECT_URI}", HttpUtility.UrlEncode(url))
.Replace("{STATE}", state);
return result;
}
const string getAccessTokenTemplate = "https://api.weixin.qq.com/sns/oauth2/access_token?appid={APPID}&secret={SECRET}&code={CODE}&grant_type=authorization_code";
public static string QueryOpenID(string code)
{
var config = new B3WeChatConfig();
var url = getAccessTokenTemplate.Replace("{APPID", config.AppID)
.Replace("{SECRET}", config.AppSecret)
.Replace("{CODE}", code);
var json = new WebClient() { Encoding = Encoding.UTF8 }.DownloadString(url);
var response = AuthorizationCodeResponse.Parse(json);
return response.openid;
}
}
}

+ 22
- 0
B3WeChat/WeiChatObjs/AuthorizationCodeResponse.cs View File

@ -0,0 +1,22 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace BWP.B3WeChat.WeiChatObjs
{
//http://mp.weixin.qq.com/wiki/4/9ac2e7b1f1d22e9e57260f6553822520.html
public class AuthorizationCodeResponse : BaseResponse<AuthorizationCodeResponse>
{
public string access_token { get; set; }
public int expires_in { get; set; }
public string refresh_token { get; set; }
public string openid { get; set; }
public string scope { get; set; }
}
}

+ 44
- 0
B3WeChat/WeiChatObjs/BaseResponse.cs View File

@ -0,0 +1,44 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.Script.Serialization;
namespace BWP.B3WeChat.WeiChatObjs
{
public class BaseResponse<T> : BaseResponse where T : BaseResponse
{
public static T Parse(string jsonr)
{
var result = new JavaScriptSerializer().Deserialize<T>(jsonr);
result.CheckError();
return result;
}
}
public class BaseResponse
{
public int errcode { get; set; }
public string errmsg { get; set; }
public bool IsError
{
get
{
return errcode > 0;
}
}
public void CheckError()
{
if (errcode > 0)
{
throw new Exception(string.Format("{0} {1} {2}", this.GetType().Name, errcode, errmsg));
}
}
}
}

+ 10
- 0
WebFolder/config/NamedValue/B3WeChat.xml View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8" ?>
<NamedValueSettings>
<NamedValue type="BWP.B3WeChat.BO.NamedValueTemplate.审批状态, B3WeChat">
<Word name="待审批" value="0"/>
<Word name="已审批" value="10"/>
<Word name="已退回" value="20"/>
<Word name="已删除" value="30"/>
</NamedValue>
</NamedValueSettings>

Loading…
Cancel
Save