heyuntao
2023-05-05 cc09b6fe6ffac34a4eeeb26d313b187713cae0de
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
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<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);
            //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;
        }
    }
}