zhao_js
2024-01-04 6898a19dcf7f52a1f93f8775cdfafc1685b4ee97
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
using Microsoft.Extensions.Caching.Memory;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Xml;
using CommonUtil;
using WeiXinKfSDK;
using WeiXinKfSDK.Response;
using Operater.DTO.TopMessage;
using CommonUtil.RabbitMQ;
using DbAccess;
using System.Text;
 
namespace Api.MessageReceive.Service
{
    public class WxKfService
    {
        public static WxKfToken _wxkfToken;
 
        public static GzhToken _gzhToken;
 
        public static ISysSqlHelper dbMain = SysSqlHelper.CreateSqlHelper("db_main");
        //public async Task WxMessageHandle(string xmlMessage)
        public async static Task WxMessageHandle(string xmlMessage, string msgtype)
        {
            TradeMqMessage tradeMqMessage = new TradeMqMessage()
            {
                MsgType = msgtype,
                MsgBody = xmlMessage
            };
            string ret = MQClientFullChannel.SendMessageStatic(0, "wxkf_message", JSONUtil.ObjectToJson(tradeMqMessage));
            if (ret != "ok")
            {
                LogUtil.Info($"发MQ失败:{xmlMessage}", "wx处理失败");
            }
 
        }
 
        public async static Task RecordeGzhInfo(GetGzhUserInfoResonse userInfo)
        {
            try
            {
                string nickName = "";
                if(!userInfo.nickname.IsNullOrEmpty())
                {
                    nickName= Encoding.UTF8.GetString(Encoding.GetEncoding("ISO-8859-1").GetBytes(userInfo.nickname));
                }
                string record = $"replace into gzh_userinfo values('{userInfo.openid}','{nickName}','{userInfo.sex}','{userInfo.province}','{userInfo.city}','{userInfo.headimgurl}','{userInfo.unionid}',now())";
                dbMain.ExecuteNonQuery(record);
            }
            catch (Exception e)
            {
                LogUtil.Info($"发MQ失败:{e.ToString()}", "gzh入库失败");
            }
        }
 
        /// <summary>
        /// 获取公众号token
        /// </summary>
        /// <returns></returns>
        public static string GetGzhToken()
        {
            if(_gzhToken.IsNull()|| _gzhToken.ExpressTime<DateTime.Now)
            {
                if(_gzhToken.IsNull())
                {
                    _gzhToken = new GzhToken();
                }
                var token = WeiXinKfClient.GetGzhAccessToken();
                _gzhToken.AccessToken = token.access_token;
                _gzhToken.ExpressTime = DateTime.Now.AddSeconds(token.expires_in);
            }
            return _gzhToken.AccessToken;
        }
    }
}