You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

103 lines
3.2 KiB

using Bwp.MainSystem;
using BWP.B3WeChat.BL;
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;
using Forks.EnterpriseServices.SqlDoms;
using Forks.Utils;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Web;
using TSingSoft.WebPluginFramework;
namespace BWP.B3WeChat.Rpcs
{
[Rpc]
public static class ApproveMessageRpc
{
static IApproveMessageBL bl = BIFactory.Create<IApproveMessageBL>();
const string authUrlTemplate = "https://open.weixin.qq.com/connect/oauth2/authorize?appid={APPID}&redirect_uri={REDIRECT_URI}&response_type=code&scope=snsapi_base#wechat_redirect";
[Rpc]
public static void Insert(ApproveMessage message)
{
var deviceNumber = ClientRpc.GetDeviceNumber();
message.CustomerCode = deviceNumber;
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;
var originUrl = internetAccessAddress + "app/index.html?messageid=" + message.ID;
var wechatmessage = string.Format("ERP系统给你的用户{0}发送了一个消息待您审批", message.Username);
var timeStr = DateTime.Now.ToLongTimeString();
SendMessageUtil.SendInformInfo(message.OpenID, wechatmessage, timeStr, message.Title, message.Username, BLContext.ClientIP, timeStr, "", originUrl);
}
[Rpc]
public static Dictionary<string, short> QueryApproveResult(string[] messageIDList)
{
if (messageIDList.Length == 0)
{
return new Dictionary<string, short>(0);
}
var query = new DQueryDom(new JoinAlias(typeof(ApproveMessage)));
query.Where.Conditions.Add(DQCondition.InList(DQExpression.Field("ID"),
messageIDList.Select((item) => DQExpression.Value(item)).ToArray()));
query.Columns.Add(DQSelectColumn.Field("ID"));
query.Columns.Add(DQSelectColumn.Field("ApproveResult"));
var dic = query.EExecuteList<string, NamedValue<>>()
.ToDictionary((item) => item.Item1, (item) => item.Item2.Value);
foreach (var messasgeID in messageIDList)
{
if (!dic.ContainsKey(messasgeID))
{
dic.Add(messasgeID, ..Value);
}
}
return dic;
}
[Rpc]
public static void Delete(string messageID)
{
bl.Delete(messageID);
}
}
}