Browse Source

增加微信扫码登录接口

master
yashen 8 years ago
parent
commit
d02007d064
6 changed files with 135 additions and 0 deletions
  1. +1
    -0
      B3WeChat/B3WeChat.csproj
  2. +30
    -0
      B3WeChat/BO/ScanLoginRequest.cs
  3. +3
    -0
      B3WeChat/Rpcs/ApproveMessageRpc.cs
  4. +12
    -0
      B3WeChat/Rpcs/C3Rpc.cs
  5. +48
    -0
      B3WeChat/Rpcs/ClientRpc.cs
  6. +41
    -0
      B3WeChat/Rpcs/WeChatUserRpc.cs

+ 1
- 0
B3WeChat/B3WeChat.csproj View File

@ -119,6 +119,7 @@
<Compile Include="BO\NamedValueTemplate.cs" />
<Compile Include="BO\QRCodeScene.cs" />
<Compile Include="BO\CustomerUser.cs" />
<Compile Include="BO\ScanLoginRequest.cs" />
<Compile Include="CustomerUserContext.cs" />
<Compile Include="Entities\ErrorObject.cs" />
<Compile Include="Entities\EventType.cs" />


+ 30
- 0
B3WeChat/BO/ScanLoginRequest.cs View File

@ -0,0 +1,30 @@
using BWP.B3Frameworks.BO;
using Forks.EnterpriseServices.DataForm;
using Forks.EnterpriseServices.DomainObjects2;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using TSingSoft.WebPluginFramework;
namespace BWP.B3WeChat.BO
{
/// <summary>
/// 微信扫码登录
/// </summary>
[BOClass]
[Serializable]
[DFClass]
public class ScanLoginRequest:Base
{
/// <summary>
/// 客户号
/// </summary>
[DbColumn(AllowNull=false)]
public string CustomerCode { get; set; }
public bool Confirmed { get; set; }
public string CustomerUsername { get; set; }
}
}

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

@ -19,6 +19,9 @@ using TSingSoft.WebPluginFramework;
namespace BWP.B3WeChat.Rpcs
{
/// <summary>
/// 客户服务器接口关于审批消息的部分
/// </summary>
[Rpc]
public static class ApproveMessageRpc
{


+ 12
- 0
B3WeChat/Rpcs/C3Rpc.cs View File

@ -9,9 +9,21 @@ using System.Text;
namespace BWP.B3WeChat.Rpcs
{
/// <summary>
/// 开发给C3系统的接口
/// </summary>
[Rpc]
public static class C3Rpc
{
/// <summary>
/// 向用户发送评价链接
/// </summary>
/// <param name="serviceNo"></param>
/// <param name="username"></param>
/// <param name="first"></param>
/// <param name="billNo"></param>
/// <param name="remark"></param>
/// <param name="url"></param>
[Rpc]
public static void SendAppraiseLinkMessage(string serviceNo,string username,string first,string billNo,string remark,string url)
{


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

@ -2,6 +2,7 @@
using BWP.B3WeChat.BO;
using BWP.B3WeChat.BO.NamedValueTemplate;
using BWP.B3WeChat.Utils;
using Forks.EnterpriseServices.BusinessInterfaces;
using Forks.EnterpriseServices.DomainObjects2;
using Forks.EnterpriseServices.DomainObjects2.DQuery;
using Forks.EnterpriseServices.JsonRpc;
@ -16,6 +17,10 @@ using TSingSoft.WebPluginFramework;
namespace BWP.B3WeChat.Rpcs
{
/// <summary>
/// 客户服务器访问微信平台的接口
/// </summary>
[Rpc]
public static class ClientRpc
{
@ -117,5 +122,48 @@ namespace BWP.B3WeChat.Rpcs
}
[Rpc]
public static long RequestScanLogin()
{
var request = new ScanLoginRequest();
request.CustomerCode = CustomerUserContext.Current.CustomerCode;
using (var context = new TransactionContext())
{
context.Session.Insert(request);
context.Commit();
}
return request.ID;
}
/// <summary>
/// 浏览器查询是否已扫码登录
/// </summary>
/// <param name="requestID"></param>
/// <returns></returns>
[Rpc(RpcFlags.SkipAuth)]
public static bool ScanLoginIsConfirmed(long requestID)
{
var query = new DQueryDom(new JoinAlias(typeof(ScanLoginRequest)));
query.Range = SelectRange.Top(1);
query.Where.Conditions.Add(DQCondition.EQ("ID", requestID));
query.Columns.Add(DQSelectColumn.Field("Confirmed"));
return query.EExecuteScalar<bool?>() ?? false;
}
[Rpc]
public static string QueryLoginResult(long requestID)
{
var query = new DQueryDom(new JoinAlias(typeof(ScanLoginRequest)));
query.Range = SelectRange.Top(1);
query.Where.Conditions.Add(DQCondition.EQ("ID", requestID));
query.Where.Conditions.Add(DQCondition.EQ("Confirmed", true));
query.Where.Conditions.Add(DQCondition.EQ("CustomerCode", CustomerUserContext.Current.CustomerCode));
query.Columns.Add(DQSelectColumn.Field("CustomerUsername"));
return query.EExecuteScalar<string>();
}
}
}

+ 41
- 0
B3WeChat/Rpcs/WeChatUserRpc.cs View File

@ -2,6 +2,8 @@
using BWP.B3WeChat.BO;
using BWP.B3WeChat.BO.NamedValueTemplate;
using BWP.B3WeChat.Utils;
using BWP.Web.Utils;
using Forks.EnterpriseServices.BusinessInterfaces;
using Forks.EnterpriseServices.DomainObjects2;
using Forks.EnterpriseServices.DomainObjects2.DQuery;
using Forks.EnterpriseServices.JsonRpc;
@ -14,6 +16,9 @@ using TSingSoft.WebPluginFramework;
namespace BWP.B3WeChat.Rpcs
{
/// <summary>
/// 微信公众号页面使用的接口
/// </summary>
[Rpc]
public static class WeChatUserRpc
{
@ -93,5 +98,41 @@ namespace BWP.B3WeChat.Rpcs
{
return InOutMessageUtil.GetJsApiSignature(noncestr, timestamp, url);
}
[Rpc]
public static void ScanLoginConfirm(long requestID)
{
var request = WebBLUtil.GetSingleDmo<ScanLoginRequest>(new Tuple<string, object>("ID", requestID));
if (request == null)
{
throw new Exception("不存在的扫码登录号");
}
if(request.Confirmed){
throw new Exception("已经确认过了");
}
var queryUser = new DQueryDom(new JoinAlias(typeof(CustomerUser)));
queryUser.Where.Conditions.Add(DQCondition.EQ("CustomerCode", request.CustomerCode));
queryUser.Where.Conditions.Add(DQCondition.EQ("OpenID", WeChatUserContext.Current.OpenID));
queryUser.Range = SelectRange.Top(1);
queryUser.Columns.Add(DQSelectColumn.Field("CustomerUsername"));
var username = queryUser.EExecuteScalar<string>();
if (string.IsNullOrEmpty(username))
{
throw new Exception("未能发现关联的用户");
}
request.Confirmed = true;
request.CustomerUsername = username;
using (var context = new TransactionContext())
{
context.Session.Update(request);
context.Commit();
}
}
}
}

Loading…
Cancel
Save