From af71cc35277ea005025f29f28c1b4a8f985b3737 Mon Sep 17 00:00:00 2001 From: yashen Date: Wed, 21 Sep 2016 17:57:57 +0800 Subject: [PATCH] add WeChatUserRpc MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 微信网页使用的rpc方法 --- B3WeChat/B3WeChat.csproj | 1 + B3WeChat/BL/IApproveMessageBL.cs | 37 +++++++++++ B3WeChat/BO/ApproveMessage.cs | 3 + B3WeChat/BO/CustomerUser.cs | 2 + B3WeChat/Rpcs/ApproveMessageRpc.cs | 28 ++++++-- B3WeChat/Rpcs/ClientRpc.cs | 2 +- B3WeChat/Rpcs/WeChatUserRpc.cs | 50 ++++++++++++++ B3WeChat/Rpcs/geornoln.d5t | 101 ----------------------------- 8 files changed, 118 insertions(+), 106 deletions(-) create mode 100644 B3WeChat/Rpcs/WeChatUserRpc.cs delete mode 100644 B3WeChat/Rpcs/geornoln.d5t diff --git a/B3WeChat/B3WeChat.csproj b/B3WeChat/B3WeChat.csproj index f9113c7..07ec337 100644 --- a/B3WeChat/B3WeChat.csproj +++ b/B3WeChat/B3WeChat.csproj @@ -117,6 +117,7 @@ + diff --git a/B3WeChat/BL/IApproveMessageBL.cs b/B3WeChat/BL/IApproveMessageBL.cs index 78bfc64..093a3f8 100644 --- a/B3WeChat/BL/IApproveMessageBL.cs +++ b/B3WeChat/BL/IApproveMessageBL.cs @@ -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); + } } } diff --git a/B3WeChat/BO/ApproveMessage.cs b/B3WeChat/BO/ApproveMessage.cs index a0087ad..ec9b9bc 100644 --- a/B3WeChat/BO/ApproveMessage.cs +++ b/B3WeChat/BO/ApproveMessage.cs @@ -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; } diff --git a/B3WeChat/BO/CustomerUser.cs b/B3WeChat/BO/CustomerUser.cs index 46c8a29..30188d6 100644 --- a/B3WeChat/BO/CustomerUser.cs +++ b/B3WeChat/BO/CustomerUser.cs @@ -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)] diff --git a/B3WeChat/Rpcs/ApproveMessageRpc.cs b/B3WeChat/Rpcs/ApproveMessageRpc.cs index a185fe5..8edc82c 100644 --- a/B3WeChat/Rpcs/ApproveMessageRpc.cs +++ b/B3WeChat/Rpcs/ApproveMessageRpc.cs @@ -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(); + + if (string.IsNullOrEmpty(openID)) + { + throw new Exception("审批用户没有关注公众号"); + } + + message.OpenID = openID; ApproveMessageBL.Instance.Insert(message); + + + var mainSystemConfig = new MainSystemConfig(); + var internetAccessAddress = mainSystemConfig.InternetAccessAddress.Value; + + } diff --git a/B3WeChat/Rpcs/ClientRpc.cs b/B3WeChat/Rpcs/ClientRpc.cs index 8ec8963..eee813b 100644 --- a/B3WeChat/Rpcs/ClientRpc.cs +++ b/B3WeChat/Rpcs/ClientRpc.cs @@ -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))); diff --git a/B3WeChat/Rpcs/WeChatUserRpc.cs b/B3WeChat/Rpcs/WeChatUserRpc.cs new file mode 100644 index 0000000..e76c695 --- /dev/null +++ b/B3WeChat/Rpcs/WeChatUserRpc.cs @@ -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().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); + + } + + + } +} diff --git a/B3WeChat/Rpcs/geornoln.d5t b/B3WeChat/Rpcs/geornoln.d5t deleted file mode 100644 index 77b3754..0000000 --- a/B3WeChat/Rpcs/geornoln.d5t +++ /dev/null @@ -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(); - 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(); - 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(); - 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; - } - - } -}