using CommonUtil;
|
using CommonUtil.RabbitMQ;
|
using DbAccess;
|
using Microsoft.AspNetCore.Http;
|
using Operater.DTO.TopMessage;
|
using System;
|
using System.Collections.Generic;
|
using System.IO;
|
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<bool> 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);
|
LogUtil.Info(msg, "有赞body日志");
|
//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;
|
//}
|
switch (eventType)
|
{
|
case "OPEN_PUSH_SCRM_CUSTOMER_AUTH_MOBILE"://客户手机号授权信息
|
SendMemberInfo(youZanMsgModel, eventType);
|
break;
|
default:
|
SendTradeInfo(youZanMsgModel, eventType);
|
break;
|
}
|
|
return true;
|
}
|
|
private static void SendMemberInfo(YouZanMsgModel youZanMsgModel, string eventType)
|
{
|
youZanMsgModel.type = "OPEN_PUSH_SCRM_CUSTOMER_AUTH_MOBILE";
|
string msg = JSONUtil.ObjectToJson(youZanMsgModel);
|
//消息入库
|
string inserSql = $"insert into yz_msg_history(id,event_type,msg_body,create_time,msg_sign)values('{Guid.NewGuid().ToString()}','{eventType}','{msg}',now(),'{youZanMsgModel.mobile}')";
|
dbMain.ExecuteNonQuery(inserSql);
|
TradeMqMessage tradeMqMessage = new TradeMqMessage()
|
{
|
MsgType = "yz_auth_mobile",
|
MsgBody = msg
|
};
|
string ret = MQClientFullChannel.SendMessageStatic(0, "trade_interflow", JSONUtil.ObjectToJson(tradeMqMessage));
|
if (ret != "ok")
|
{
|
LogUtil.Info($"发MQ失败:{youZanMsgModel.msg_id}", "处理失败");
|
}
|
}
|
|
private static void SendTradeInfo(YouZanMsgModel youZanMsgModel, string eventType)
|
{
|
string msg = JSONUtil.ObjectToJson(youZanMsgModel);
|
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
|
};
|
if (msg.Contains("121102932"))
|
{//测试店铺数据
|
MQClientFullChannel.SendMessageStatic(1, "trade_interflow", JSONUtil.ObjectToJson(tradeMqMessage));
|
return;
|
}
|
//发送定时mq
|
string ret = MQClientFullChannel.SendDelayMessageStatic(0, "trade_interflow", JSONUtil.ObjectToJson(tradeMqMessage), DateTime.Now.AddMinutes(1));
|
if (ret != "ok")
|
{
|
LogUtil.Info($"发MQ失败:{youZanMsgModel.msg_id}", "处理失败");
|
}
|
}
|
}
|
}
|