using Common; using Common.Model; using Common.Wechat; using CoreEntity.Entity; using JCSoft.WX.Framework.Api; using JCSoft.WX.Framework.Extensions; using JCSoft.WX.Framework.Models; using JCSoft.WX.Framework.Models.ApiRequests; using JCSoft.WX.Framework.Models.ApiResponses; using JCSoft.WX.Framework.Models.Exceptions; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.Text; using System.Threading.Tasks; using ZcPeng.PublicLibrary; using ZcPeng.weixin.PublicAccount; namespace CoreEntity.TimeJob { public class ConfirmOrderTask { public static Message sendSupplyMassMesage(IApiClient _client, string PushAccountId, string OrderBillNo,// string GoodsName, string StoreGapNums, string TotalAmount, DateTime EndTime) { string accountName = string.Empty; string accountPassword = string.Empty; string WxOpenId = ""; //用户账户,密码 #region 获取user string result = ""; DataTable dt = new DataTable(); string commandTextUser = "Select roleId,accountName,AccountPhone,AccountPassWord,WxOpenId From " + Config.TablePrefix + "Account Where Id=@PushAccountId"; List> parametersRecord = new List>(); parametersRecord.Add(new List(2) { "PushAccountId", PushAccountId }); List parameters1 = DataAccess.ToParameters(parametersRecord); bool result1 = DataAccess.GetValues(commandTextUser, ref dt, parameters1.ToArray(), out result); List users = new List(); if (dt != null && dt.Rows.Count > 0) { // 把DataTable转换为IList users = (List)ModelConvertHelper.ConvertToModel(dt); accountName = users.ToArray()[0].AccountName; accountPassword = users.ToArray()[0].AccountPassWord; WxOpenId = users.ToArray()[0].WxOpenId; } #endregion if(WxOpenId != "" && WxOpenId != null) { #region 推送信息 //ErrorMessage errorMessage; //long message = -1; //string content = "我们有新的采购需求:"+"" // +",请登陆:http:///coop.360lj.com:8000 填写您的可供货数量"; //message = MassMessage.Send(Config.WeChatAppName, true, "group", MassMessageTypeEnum.text, // content, out errorMessage); Dictionary temp = new Dictionary(); TemplateDataProperty tmpdatap = new TemplateDataProperty(); tmpdatap.Value = "采购订单,请确认订单:"; tmpdatap.Color = "#173177"; temp.Add("first", tmpdatap); //产品品种需求数量 tmpdatap = new TemplateDataProperty(); tmpdatap.Value = GoodsName; tmpdatap.Color = "#173177"; temp.Add("keyword1", tmpdatap); tmpdatap = new TemplateDataProperty(); tmpdatap.Value = StoreGapNums; tmpdatap.Color = "#173177"; temp.Add("keyword2", tmpdatap); tmpdatap = new TemplateDataProperty(); tmpdatap.Value = TotalAmount; tmpdatap.Color = "#173177"; temp.Add("keyword3", tmpdatap); tmpdatap = new TemplateDataProperty(); tmpdatap.Value = "https://" + Config.Host; tmpdatap.Color = "#173177"; temp.Add("keyword4", tmpdatap); tmpdatap = new TemplateDataProperty(); string content = "如有变更,请联系采购员" ; tmpdatap.Value = content; tmpdatap.Color = "#173177"; temp.Add("remark", tmpdatap); //加入测试公众号 AccountInfo account = new AccountInfo(Config.WeChatAppName, Config.WeChatAppKey, Config.WeChatAppSecret, null, null); AccountInfoCollection.SetAccountInfo(account); //加入正式公众号 //AccountInfoCollection.SetAccountInfo(new AccountInfo("YourId2", "AppId", "AppSecret", "Token", "EncodingAesKey", "非測試")); ZcPeng.weixin.PublicAccount.AccessToken token = ZcPeng.weixin.PublicAccount.AccessToken.Get(Config.WeChatAppName); if (token == null) { ErrorMessage errorMessage = new ErrorMessage(ErrorMessage.ExceptionCode, "获取许可令牌失败。"); Message msg = new Message(Guid.NewGuid(), MessageType.Request, errorMessage.errcode == 0 ? "" : errorMessage.errcode.ToString(), DateTime.Now, "TemplateSend_OrderConfirm", errorMessage.errcode + ":" +errorMessage.errmsg); Message.Insert(msg); return null; } var request = new TemplateSendRequest { AccessToken = token.access_token, ToUser = WxOpenId, TemplateID = "SnuX3WGoLBBEUs9wnwyqur0ocdypUk2euX45BIj9JKk", TopColor = "#FF0000", Url = "https://" + Config.Host + "/web/supplymobile/listorder?OrderBillNo=" + OrderBillNo, Data = temp, }; Log log = new Log(AppDomain.CurrentDomain.BaseDirectory + @"/log/Log.txt"); log.log("推送订单确认模板消息前:"+token.ToString()); if (_client != null){ var response = _client.Execute(request); TemplateSendResponse resp = (TemplateSendResponse)response; Message msg = new Message(Guid.NewGuid(), MessageType.Request, content, DateTime.Now, "TemplateSend_OrderConfirm", resp.ErrorMessage); Message.Insert(msg); return msg; } else { string uri = string.Format(request.GetUrlFormat, token.access_token); var url = $"{new WXOptions().ApiUrl}{uri}"; log.log("发模板消息前 url:" + url); var json = request.GetPostContentJson(); log.log("发模板消息前 json:" + json); string responseContent = HttpHelper.HttpPost(url, json, "application/text").Result; log.log("发模板消息后 responseContent json:" + responseContent); TemplateSendResponse resp = JsonConvert.DeserializeObject(responseContent); Message msg = new Message(Guid.NewGuid(), MessageType.Request, content, DateTime.Now, "TemplateSend_OrderConfirm", resp.ErrorCode+":"+ resp.ErrorMessage); Message.Insert(msg); return msg; } #endregion } return null; } } }