diff --git a/B3WeChat.Web/Pages/WeChatReceive.cs b/B3WeChat.Web/Pages/WeChatReceive.cs index 2f1b68e..099ad2a 100644 --- a/B3WeChat.Web/Pages/WeChatReceive.cs +++ b/B3WeChat.Web/Pages/WeChatReceive.cs @@ -1,6 +1,8 @@ -using BWP.B3WeChat.BO; +using BWP.B3WeChat.BL; +using BWP.B3WeChat.BO; using BWP.B3WeChat.Entities; using BWP.B3WeChat.Utils; +using BWP.Web.Utils; using Forks.EnterpriseServices.BusinessInterfaces; using Forks.EnterpriseServices.DomainObjects2; using Forks.EnterpriseServices.DomainObjects2.DQuery; @@ -78,33 +80,11 @@ namespace BWP.Web.Pages } static void UpdateQRCode(string sceneId, string OppenId) { - var query = new DmoQuery(typeof(QRCode)); query.Where.Conditions.Add(DQCondition.EQ("ID", sceneId)); query.Range = SelectRange.Top(1); var scene = query.EExecuteScalar(); - - var user = new CustomerUser(); - user.CustomerCode = scene.Customer; - user.CustomerUsername = scene.UserId; - user.OpenID = OppenId; - - using (var context = new TransactionContext()) - { - context.Session.AddInsertOrUpdate(user); - context.Commit(); - } - - - //var update = new DQUpdateDom(typeof(QRCode)); - //logger.Info("sceneId:" + sceneId + ",OppenId" + OppenId); - //update.Where.Conditions.Add(DQCondition.EQ("ID", sceneId)); - //update.Columns.Add(new DQUpdateColumn("OppenId", OppenId)); - //using (var session = Dmo.NewSession()) - //{ - // session.ExecuteNonQuery(update); - // session.Commit(); - //} + CustomerUserBL.Instance.Follow(scene.Customer, scene.UserId, OppenId); } } diff --git a/B3WeChat/BL/ICustomerUserBL.cs b/B3WeChat/BL/ICustomerUserBL.cs index 36a5f8b..666b836 100644 --- a/B3WeChat/BL/ICustomerUserBL.cs +++ b/B3WeChat/BL/ICustomerUserBL.cs @@ -1,4 +1,6 @@ -using BWP.B3WeChat.BO; +using BWP.B3Frameworks.Utils; +using BWP.B3WeChat.BO; +using BWP.B3WeChat.Utils; using Forks.EnterpriseServices.BusinessInterfaces; using Forks.EnterpriseServices.DomainObjects2.DQuery; using Forks.Utils; @@ -20,24 +22,49 @@ namespace BWP.B3WeChat.BL public class CustomerUserBL : BusinessClass, ICustomerUserBL { + + static Lazy mInstance = new Lazy(() => + { + return BIFactory.Create(); + }); + + public static ICustomerUserBL Instance + { + get + { + return mInstance.Value; + } + } + + 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 user = InnerBLUtil.GetSingleDmo(Session, new Tuple("CustomerCode", "customerCode"), +new Tuple("CustomerUsername", customerUsername)); - var customerUser = new CustomerUser() + if (user != null) { - CustomerCode = customerCode, - CustomerUsername = customerUsername, - OpenID = openID - }; - Session.Insert(customerUser); - - var userBL = BIFactory.Create(this); - if (userBL.Exist(openID)) + if (user.OpenID != openID) + { + var oldOpenID = user.OpenID; + user.OpenID = openID; + Session.Update(user); + var update = new DQUpdateDom(typeof(ApproveMessage)); + update.Where.Conditions.Add(DQCondition.EQ("CustomerCode", user.CustomerCode)); + update.Where.Conditions.Add(DQCondition.EQ("CustomerUsername", user.CustomerUsername)); + update.Columns.Add(new DQUpdateColumn("OpenID", openID)); + Session.ExecuteNonQuery(update); + + SendMessageUtil.SendOverwriteNotice(user.OpenID, customerUsername); + } + } + else { - userBL.Create(openID, StringUtil.CreateRandomString(30), "wechat", customerCode + "/" + customerUsername); + user = new CustomerUser(); + user.CustomerCode = customerCode; + user.CustomerUsername = customerUsername; + user.OpenID = openID; + Session.Insert(user); } } } diff --git a/B3WeChat/BO/ApproveMessage.cs b/B3WeChat/BO/ApproveMessage.cs index 2c7f6e4..79a22af 100644 --- a/B3WeChat/BO/ApproveMessage.cs +++ b/B3WeChat/BO/ApproveMessage.cs @@ -1,5 +1,6 @@ using BWP.B3WeChat.BO.NamedValueTemplate; using Forks.EnterpriseServices; +using Forks.EnterpriseServices.DataDictionary; using Forks.EnterpriseServices.DataForm; using Forks.EnterpriseServices.DomainObjects2; using Forks.Utils; @@ -16,6 +17,8 @@ namespace BWP.B3WeChat.BO [BOClass,DFClass] [KeyField("ID",KeyGenType.assigned)] + [DBIndex("IDX_B3WeChat_ApproveMessage_CustomerCode_Username","CustomerCode",false,0)] + [DBIndex("IDX_B3WeChat_ApproveMessage_CustomerCode_Username", "Username", false, 1)] public class ApproveMessage { /// @@ -56,6 +59,7 @@ namespace BWP.B3WeChat.BO [LogicName("审批意见")] public string ApproveComment { get; set; } + [DbColumn(Index=IndexType.Normal)] public string OpenID { get; set; } diff --git a/B3WeChat/Utils/SendMessageUtil.cs b/B3WeChat/Utils/SendMessageUtil.cs index 7ae9ab4..545eca5 100644 --- a/B3WeChat/Utils/SendMessageUtil.cs +++ b/B3WeChat/Utils/SendMessageUtil.cs @@ -3,6 +3,7 @@ using System; using System.Collections.Generic; using System.Linq; using System.Text; +using TSingSoft.WebPluginFramework; namespace BWP.B3WeChat.Utils { @@ -81,5 +82,23 @@ namespace BWP.B3WeChat.Utils InOutMessageUtil.SendTemplateMessage(openID, "QEgY8xa4BuAAcyTex1qXuN9KeKM93O9XHCz2Ti-oCpc", dict); } + + +//模板:IDQp53p4jHyk9vxXiLs0VRUN_5HHwmjeWPT-7XLwG2FkU +//标题:绑定通知 +//详细内容 +//{{first.DATA}} +//绑定账号:{{keyword1.DATA}} +//绑定时间:{{keyword2.DATA}} +//{{remark.DATA}} + public static void SendOverwriteNotice(string openID,string username) + { + var dict = new Dictionary(); + var first = String.Format("你好,ERP系统中有新的微信账号替换了你原来绑定的用户"); + dict.Add("first", new ValueColor(first)); + dict.Add("keyword1", new ValueColor(username)); + dict.Add("keyword2", new ValueColor(FormatTime(BLContext.Now))); + dict.Add("remark", new ValueColor("若不是你本人操作,请与管理员联系")); + } } }