using CommonUtil; using CommonUtil.RabbitMQ; using DbAccess; using Microsoft.AspNetCore.Http; using Operater.DTO.TopMessage; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace Api.MessageReceive.Service { public class YzMessageService { public static ISysSqlHelper dbMain = SysSqlHelper.CreateSqlHelper("db_main"); public async static Task ServiceExecute(IHttpContextAccessor _accessor, YouZanMsgModel youZanMsgModel) { //防伪签名 string eventSign = _accessor.HttpContext.Request.Headers["Event-Sign"].ToString(); string eventType = _accessor.HttpContext.Request.Headers["Event-Type"].ToString(); string clientId = _accessor.HttpContext.Request.Headers["Client-Id"].ToString(); string msg = JSONUtil.ObjectToJson(youZanMsgModel); //string clentSecret = "63763d1e16db3ed134fc017663b22469"; ////判断消息是否合法 //string sign = SecurityUtil.MD5Encrypt(clientId + JSONUtil.ObjectToJson(youZanMsgModel) + clentSecret, false); //if (!sign.Equals(eventSign)) //{//消息不合法 // LogUtil.Info($"官方eventSign:{eventSign},计算sign:{sign}", "不合法"); // return false; //} string decryptMsg = youZanMsgModel.msg.ToUrlDecode(); //消息入库 string inserSql = $"insert into yz_msg_history(id,event_type,msg_body,create_time,msg_sign,msg_decrypt)values('{youZanMsgModel.msg_id}','{eventType}','{msg}',now(),'{youZanMsgModel.id}','{decryptMsg}')"; dbMain.ExecuteNonQuery(inserSql); TradeMqMessage tradeMqMessage = new TradeMqMessage() { MsgType = "yz_trade", MsgBody = msg }; string ret = MQClientFullChannel.SendMessageStatic(0, "trade_interflow", JSONUtil.ObjectToJson(tradeMqMessage)); if (ret != "ok") { LogUtil.Info($"发MQ失败:{youZanMsgModel.msg_id}", "处理失败"); } return true; } } }