Browse Source

add WeChatUserRpc

微信网页使用的rpc方法
master
yashen 9 years ago
parent
commit
af71cc3527
8 changed files with 118 additions and 106 deletions
  1. +1
    -0
      B3WeChat/B3WeChat.csproj
  2. +37
    -0
      B3WeChat/BL/IApproveMessageBL.cs
  3. +3
    -0
      B3WeChat/BO/ApproveMessage.cs
  4. +2
    -0
      B3WeChat/BO/CustomerUser.cs
  5. +24
    -4
      B3WeChat/Rpcs/ApproveMessageRpc.cs
  6. +1
    -1
      B3WeChat/Rpcs/ClientRpc.cs
  7. +50
    -0
      B3WeChat/Rpcs/WeChatUserRpc.cs
  8. +0
    -101
      B3WeChat/Rpcs/geornoln.d5t

+ 1
- 0
B3WeChat/B3WeChat.csproj View File

@ -117,6 +117,7 @@
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Rpcs\ApproveMessageRpc.cs" />
<Compile Include="Rpcs\ClientRpc.cs" />
<Compile Include="Rpcs\WeChatUserRpc.cs" />
<Compile Include="Utils\InOutMessageUtil.cs" />
<Compile Include="Utils\SendMessageUtil.cs" />
<Compile Include="Utils\WeChatPageUtil.cs" />


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

@ -1,19 +1,32 @@
using BWP.B3WeChat.BO;
using BWP.B3WeChat.BO.NamedValueTemplate;
using Forks.EnterpriseServices.BusinessInterfaces;
using Forks.EnterpriseServices.DomainObjects2;
using Forks.EnterpriseServices.DomainObjects2.DQuery;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using TSingSoft.WebPluginFramework;
namespace BWP.B3WeChat.BL
{
[BusinessInterface(typeof(ApproveMessageBL))]
public interface IApproveMessageBL
{
[Log(Disabled=true)]
void Insert(ApproveMessage message);
void Delete(string messageID);
ApproveMessage Load(string messageID);
[Log(Disabled=true)]
void Approve(ApproveMessage message);
[Log(Disabled=true)]
void Reject(ApproveMessage message);
}
public class ApproveMessageBL : BusinessClass, IApproveMessageBL
@ -30,6 +43,7 @@ namespace BWP.B3WeChat.BL
public void Insert(ApproveMessage message)
{
message.CreateTime = DateTime.Now;
Session.Insert(message);
}
@ -40,5 +54,28 @@ namespace BWP.B3WeChat.BL
del.Where.Conditions.Add(DQCondition.EQ("ID", messageID));
Session.ExecuteNonQuery(del);
}
public ApproveMessage Load(string messageID)
{
var hash = new PropertyHash(1);
hash.Add("ID", messageID);
var dmoIdentity = new DmoIdentity(typeof(ApproveMessage), hash);
return (ApproveMessage)Session.Load(dmoIdentity);
}
public void Approve(ApproveMessage message)
{
message.ApproveResult = .;
Session.Update(message);
}
public void Reject(ApproveMessage message)
{
message.ApproveResult = .退;
Session.Update(message);
}
}
}

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

@ -23,6 +23,9 @@ namespace BWP.B3WeChat.BO
[DbColumn(AllowNull=false)]
public string ID { get; set; }
[DbColumn(DefaultValue="2016-9-21")]
public DateTime CreateTime { get; set; }
[LogicName("客户号")]
[DbColumn(AllowNull=false)]
public string CustomerCode { get; set; }


+ 2
- 0
B3WeChat/BO/CustomerUser.cs View File

@ -4,9 +4,11 @@ using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using TSingSoft.WebPluginFramework;
namespace BWP.B3WeChat.BO
{
[BOClass]
[LogicName("微信用户")]
[KeyField("CustomerCode", KeyGenType.assigned)]
[KeyField("CustomerUsername", KeyGenType.assigned)]


+ 24
- 4
B3WeChat/Rpcs/ApproveMessageRpc.cs View File

@ -1,4 +1,5 @@
using BWP.B3WeChat.BL;
using Bwp.MainSystem;
using BWP.B3WeChat.BL;
using BWP.B3WeChat.BO;
using BWP.B3WeChat.BO.NamedValueTemplate;
using Forks.EnterpriseServices.BusinessInterfaces;
@ -24,12 +25,31 @@ namespace BWP.B3WeChat.Rpcs
[Rpc]
public static void Insert(ApproveMessage message)
{
var user = CustomerUserContext.Current.User;
var deviceNumber = ClientRpc.GetDeviceNumber();
message.CustomerCode = deviceNumber;
message.CustomerCode = user.CustomerCode;
message.OpenID = user.OpenID;
var query = new DQueryDom(new JoinAlias(typeof(CustomerUser)));
query.Where.Conditions.Add(DQCondition.EQ("CustomerCode", deviceNumber));
query.Where.Conditions.Add(DQCondition.EQ("CustomerUsername", message.Username));
query.Columns.Add(DQSelectColumn.Field("OpenID"));
query.Range = SelectRange.Top(1);
var openID = query.EExecuteScalar<string>();
if (string.IsNullOrEmpty(openID))
{
throw new Exception("审批用户没有关注公众号");
}
message.OpenID = openID;
ApproveMessageBL.Instance.Insert(message);
var mainSystemConfig = new MainSystemConfig();
var internetAccessAddress = mainSystemConfig.InternetAccessAddress.Value;
}


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

@ -22,7 +22,7 @@ namespace BWP.B3WeChat.Rpcs
static Logger logger = new Logger("ClientRpc");
static string GetDeviceNumber()
internal static string GetDeviceNumber()
{
var user = BLContext.User;
var query = new DQueryDom(new JoinAlias(typeof(DeviceAuthentication)));


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

@ -0,0 +1,50 @@
using BWP.B3WeChat.BL;
using BWP.B3WeChat.BO;
using BWP.B3WeChat.BO.NamedValueTemplate;
using Forks.EnterpriseServices.DomainObjects2.DQuery;
using Forks.EnterpriseServices.JsonRpc;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using TSingSoft.WebPluginFramework;
namespace BWP.B3WeChat.Rpcs
{
[Rpc]
public static class WeChatUserRpc
{
[Rpc(RpcFlags.SkipAuth)]
public static ApproveMessage LoadMessage(string messageID)
{
return ApproveMessageBL.Instance.Load(messageID);
}
[Rpc(RpcFlags.SkipAuth)]
public static ApproveMessage[] MyMessages()
{
var query = new DmoQuery(typeof(ApproveMessage));
query.Where.Conditions.Add(DQCondition.EQ("OpenID", "DEBUG"));
return query.EExecuteList().Cast<ApproveMessage>().ToArray();
}
[Rpc(RpcFlags.SkipAuth)]
public static void Approve(ApproveMessage message)
{
ApproveMessageBL.Instance.Approve(message);
}
[Rpc(RpcFlags.SkipAuth)]
public static void Reject(ApproveMessage message)
{
ApproveMessageBL.Instance.Reject(message);
}
}
}

+ 0
- 101
B3WeChat/Rpcs/geornoln.d5t View File

@ -1,101 +0,0 @@
using Bwp.MainSystem.BO;
using BWP.B3WeChat.BO;
using BWP.B3WeChat.Utils;
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.IO;
using System.Linq;
using System.Text;
using TSingSoft.WebPluginFramework;
namespace BWP.B3WeChat.Rpcs
{
[Rpc]
public static class ClientRpc
{
static string GetDeviceNumber()
{
var user = BLContext.User;
var query = new DQueryDom(new JoinAlias(typeof(DeviceAuthentication)));
query.Where.Conditions.Add(DQCondition.EQ("Ticket", user.UserTag.ToString("N")));
query.Columns.Add(DQSelectColumn.Field("DeviceNumber"));
query.Range = SelectRange.Top(1);
var deviceNumber = query.EExecuteScalar<string>();
return deviceNumber;
}
[Rpc]
public static void Send(String message, string username)
{
}
[Rpc]
public static String GetQRCodeUrl(string username)
{
string url = string.Empty;
string customer = GetDeviceNumber();
if (string.IsNullOrEmpty(customer))
return url;
string ticket = InOutMessageUtil.GenerateEQCode(30, GetSceneId(customer, username));
string name=DateTime.Now.Ticks.ToString() + ".jpg";
string path = GetQRCodeDir() + name;
InOutMessageUtil.GetQRPic(ticket, path);
return url;
}
static string ExistQRCode(string customer, string username)
{
var query = new DQueryDom(new JoinAlias(typeof(QRCodeScene)));
query.Columns.Add(DQSelectColumn.Field("Path"));
query.Where.Conditions.Add(DQCondition.EQ("Customer", customer));
query.Where.Conditions.Add(DQCondition.EQ("UserId", username));
query.Where.Conditions.Add(DQCondition.GreaterThan(DQExpression.Field("OutTime"), DQExpression.Value(DateTime.Now)));
query.Range = SelectRange.Top(1);
var path = query.EExecuteScalar<string>();
return path;
}
static int GetSceneId(string customer, string username)
{
var query = new DQueryDom(new JoinAlias(typeof(QRCodeScene)));
query.Columns.Add(DQSelectColumn.Field("ID"));
query.Where.Conditions.Add(DQCondition.EQ("Customer", customer));
query.Where.Conditions.Add(DQCondition.EQ("UserId", username));
query.Range = SelectRange.Top(1);
var sceneId = query.EExecuteScalar<int?>();
if (!sceneId.HasValue)
{
using (var session = Dmo.NewSession())
{
QRCodeScene newSence = new QRCodeScene()
{
Customer = customer,
UserId = username,
};
session.Insert(newSence);
session.Commit();
sceneId = newSence.ID;
}
}
return sceneId.Value;
}
static string GetQRCodeDir()
{
string dir = System.Environment.CurrentDirectory + "/QRCodePic/";
if (!Directory.Exists(dir))
{
Directory.CreateDirectory(dir);
}
return dir;
}
}
}

Loading…
Cancel
Save