zhaojs
2023-09-15 fc13938ff90213060532d99a600dea4a84456885
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
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}", "处理失败");
            }
        }
    }
}