Ejemplo n.º 1
0
 public static void WorkAsync(T obj)
 {
     foreach (var action in actions)
     {
         Task.Run(() =>
         {
             action(obj);
             redis.HashDelete(ConstCacheKey.GetQueueKey(typeof(T).Name), ConstCacheKey.GetQueueMsgKey(obj.WxId, obj.MsgId));
         });
     }
 }
Ejemplo n.º 2
0
        public static string Work(T obj)
        {
            string result = null;

            foreach (var action in actions)
            {
                result = action(obj);
                redis.HashDelete(ConstCacheKey.GetQueueKey(typeof(T).Name), ConstCacheKey.GetQueueMsgKey(obj.MsgId));
            }
            return(result);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 插入任务
        /// </summary>
        /// <param name="obj"></param>
        public static void EnqueueTask(T obj)
        {
            log.Info($"插入任务{obj.ToJson()}");
            //lock (_locker)
            //{
            // 向队列中插入任务
            _tasks.Enqueue(obj);

            //}
            redis.HashSet(ConstCacheKey.GetQueueKey(typeof(T).Name), ConstCacheKey.GetQueueMsgKey(obj.WxId, obj.MsgId), obj);
            sema.Release();
        }
Ejemplo n.º 4
0
        private static void init()
        {
            var cacheResult = redis.HashGetAll <T>(ConstCacheKey.GetQueueKey(typeof(T).Name));

            //lock (_locker)
            //{
            foreach (var item in cacheResult)
            {
                _tasks.Enqueue(item);
                sema.Release();
            }
            //}
        }
Ejemplo n.º 5
0
            public void TestCache()
            {
                var cache = RedisCache.CreateInstance();


                cache.HashSet(ConstCacheKey.GetWxIdKey(), "444", new CustomerInfoCache()
                {
                    WxId = "aaaaaaaaaa"
                });
                cache.HashSet(ConstCacheKey.GetWxIdKey(), "555", new CustomerInfoCache()
                {
                    WxId = "ccccccccccc"
                });
                cache.HashSet(ConstCacheKey.GetWxIdKey(), "6666", new CustomerInfoCache()
                {
                    WxId = "bbbbbbbbbbbb"
                });
                var adad4 = cache.HashGet <CustomerInfoCache>(ConstCacheKey.GetWxIdKey(), "1311");

                var dadddddddd = cache.HashGetAll <CustomerInfoCache>(ConstCacheKey.GetWxIdKey());

                var ss = cache.Get($"customer:service:merchant_wechat_mapping_wxid_sarw9d5l0ip622");
                //cache.Add(@"customer:service:merchant:wechat_mapping", "123345655");

                var adad = cache.HashGet("customer_service_merchant_wechat_mapping", "1233456");
                var ccc  = cache.HashGet <string>("customer_service_merchant_wechat_mapping", "wxid_sarw9d5l0ip622");

                string key = "TestCache";

                cache.Add(key, "fafa");
                var addddad = cache.Get(key);
                var reuslt  = cache.Get <CustomerInfoCache>(key);

                cache.Add(key, new CustomerInfoCache()
                {
                    WxId = "1111111111TestCache"
                });
                cache.Add(key, new CustomerInfoCache()
                {
                    WxId = "1111111111TestCache"
                });
                var reuslt1 = cache.Get <CustomerInfoCache>(key);

                cache.Remove(key);
                var reuslt2 = cache.Get <CustomerInfoCache>(key);
            }
Ejemplo n.º 6
0
        public static string UploadFile(UploadFileObj uploadFileObj)
        {
            string objName = null;
            string mchId   = RedisCache.CreateInstance().Get(ConstCacheKey.GetMchIdKey(uploadFileObj.WxId));

            if (string.IsNullOrEmpty(mchId))
            {
                mchId = "00000000000";
            }
            WechatHelper wechatHelper = new WechatHelper();

            //图片
            if (uploadFileObj.MsgType == 3)
            {
                byte[] buffer = wechatHelper.GetMsgBigImg(uploadFileObj.LongDataLength, uploadFileObj.MsgId, uploadFileObj.WxId, uploadFileObj.ToWxId, 0, (int)uploadFileObj.LongDataLength);
                if (buffer != null)
                {
                    objName = FileStorageHelper.GetObjectName(mchId);
                    FileStorageHelper.Upload(buffer, $"{objName}{uploadFileObj.MsgId}.png");
                }
            }
            //语音
            else if (uploadFileObj.MsgType == 34)
            {
                if (uploadFileObj.Buffer != null)
                {
                    objName = FileStorageHelper.GetObjectName(mchId);
                    FileStorageHelper.Upload(uploadFileObj.Buffer, $"{objName}{uploadFileObj.MsgId}.silk");
                }
            }
            //视频
            else if (uploadFileObj.MsgType == 43)
            {
                byte[] buffer = wechatHelper.GetVideo(uploadFileObj.WxId, uploadFileObj.ToWxId, uploadFileObj.MsgId, uploadFileObj.LongDataLength, 0, (int)uploadFileObj.LongDataLength);

                if (buffer != null)
                {
                    objName = FileStorageHelper.GetObjectName(mchId);
                    FileStorageHelper.Upload(buffer, $"{objName}{uploadFileObj.MsgId}.mp4");
                }
            }

            return(objName);
        }
Ejemplo n.º 7
0
        public Task Execute(IJobExecutionContext context)
        {
            var customerInfoCaches = cache.HashGetAll <CustomerInfoCache>(ConstCacheKey.GetWxIdKey());

            foreach (var item in customerInfoCaches)
            {
                try
                {
                    if (LogoutWxIds.Contains(item.WxId))
                    {
                        continue;
                    }

                    var result = wechatHelper.SyncInit(item.WxId);

                    if (result.AddMsgs != null && result.AddMsgs.Count > 0)
                    {
                        SyncMessageResult syncMessageResult = new SyncMessageResult();
                        syncMessageResult.WxId = item.WxId;
                        syncMessageResult.Data = result;
                        var     resultJson = syncMessageResult.ToJson();
                        var     buffer     = Encoding.UTF8.GetBytes(resultJson);
                        Message message    = new Message(MqConst.SyncMessageTopic, buffer);
                        var     sendResult = producer.SendMessage(message);
                    }
                }
                catch (ExpiredException)
                {
                    lock (lockObj)
                    {
                        if (!LogoutWxIds.Contains(item.WxId))
                        {
                            LogoutWxIds.Add(item.WxId);
                        }
                    }
                }
                catch (Exception ex)
                {
                    Util.Log.Logger.GetLog <SyncMessageJob>().Error(ex);
                }
            }

            return(Task.CompletedTask);
        }
Ejemplo n.º 8
0
        public Task <HttpResponseMessage> GetBigImage(BigImage bigImage)
        {
            ResponseBase <string> response = new ResponseBase <string>();

            try
            {
                UploadFileObj uploadFileObj = new UploadFileObj()
                {
                    MsgId          = bigImage.MsgId,
                    MsgType        = 3,
                    WxId           = bigImage.WxId,
                    ToWxId         = bigImage.ToWxId,
                    LongDataLength = bigImage.LongDataLength,
                };
                string mchId = RedisCache.CreateInstance().Get(ConstCacheKey.GetMchIdKey(uploadFileObj.WxId));
                if (string.IsNullOrEmpty(mchId))
                {
                    throw new Exception("未初始化商户Ip");
                }
                string objName = $"{FileStorageHelper.GetObjectName(mchId)}{uploadFileObj.MsgId}.png";

                var     producer = RocketMqHelper.CreateDefaultMQProducer(MqConst.UploadOssProducerGroup);
                var     buffer   = Encoding.UTF8.GetBytes(uploadFileObj.ToJson());
                Message message  = new Message(MqConst.UploadOssTopic, buffer);
                producer.SendMessage(message);



                response.Data = objName;
            }
            catch (ExpiredException ex)
            {
                response.Success = false;
                response.Code    = "401";
                response.Message = ex.Message;
            }
            catch (Exception ex)
            {
                response.Success = false;
                response.Code    = "500";
                response.Message = ex.Message;
            }
            return(response.ToHttpResponseAsync());
        }
Ejemplo n.º 9
0
        public static string Work(T obj)
        {
            string result = null;
            bool   isFalg = true;

            foreach (var action in actions)
            {
                try
                {
                    result = action(obj);
                }
                catch (Exception ex)
                {
                    isFalg = false;
                    Logger.GetLog <QueueHelper <T> >().Error(ex);
                }
            }
            if (isFalg)
            {
                redis.HashDelete(ConstCacheKey.GetQueueKey(typeof(T).Name), ConstCacheKey.GetQueueMsgKey(obj.WxId, obj.MsgId));
            }
            return(result);
        }
Ejemplo n.º 10
0
        public ConsumeConcurrentlyStatus consumeMessage(java.util.List list, ConsumeConcurrentlyContext ccc)
        {
            Iterator iterator = list.iterator();

            while (iterator.hasNext())
            {
                try
                {
                    var messageClientExt = iterator.next() as org.apache.rocketmq.common.message.MessageClientExt;

                    var content = Encoding.UTF8.GetString(messageClientExt.getBody());

                    UploadFileObj uploadFileObj = content.ToObj <UploadFileObj>();

                    string objName = null;
                    string mchId   = RedisCache.CreateInstance().Get(ConstCacheKey.GetMchIdKey(uploadFileObj.WxId));
                    if (string.IsNullOrEmpty(mchId))
                    {
                        throw new Exception("未初始化商户Ip");
                    }
                    WechatHelper wechatHelper = new WechatHelper();
                    //图片
                    if (uploadFileObj.MsgType == 3)
                    {
                        byte[] buffer = wechatHelper.GetMsgBigImg(uploadFileObj.LongDataLength, uploadFileObj.MsgId, uploadFileObj.WxId, uploadFileObj.ToWxId, 0, (int)uploadFileObj.LongDataLength);
                        if (buffer != null)
                        {
                            objName = FileStorageHelper.GetObjectName(mchId);
                            FileStorageHelper.Upload(buffer, $"{objName}{uploadFileObj.MsgId}.png");
                        }
                    }
                    //语音
                    else if (uploadFileObj.MsgType == 34)
                    {
                        if (uploadFileObj.Buffer != null)
                        {
                            objName = FileStorageHelper.GetObjectName(mchId);
                            FileStorageHelper.Upload(uploadFileObj.Buffer, $"{objName}{uploadFileObj.MsgId}.silk");
                        }
                    }
                    //视频
                    else if (uploadFileObj.MsgType == 43)
                    {
                        byte[] buffer = wechatHelper.GetVideo(uploadFileObj.WxId, uploadFileObj.ToWxId, uploadFileObj.MsgId, uploadFileObj.LongDataLength, 0, (int)uploadFileObj.LongDataLength);

                        if (buffer != null)
                        {
                            objName = FileStorageHelper.GetObjectName(mchId);
                            FileStorageHelper.Upload(buffer, $"{objName}{uploadFileObj.MsgId}.mp4");
                        }
                    }
                    //Util.Log.Logger.GetLog<UploadOssMessageListener>().Info($"消费Id:{messageClientExt.getMsgId()}--数据:{content}");
                }
                catch (Exception ex)
                {
                    Util.Log.Logger.GetLog <UploadOssMessageListener>().Error(ex);
                    return(ConsumeConcurrentlyStatus.RECONSUME_LATER);
                }
            }



            return(ConsumeConcurrentlyStatus.CONSUME_SUCCESS);
        }
Ejemplo n.º 11
0
        public override async Task OnAuthorizationAsync(HttpActionContext actionContext, CancellationToken cancellationToken)
        {
            var requestBase = await actionContext.Request.Content.ReadAsAsync <RequestBase>();

            if (requestBase == null)
            {
                ResponseBase response = new ResponseBase()
                {
                    Success = false,
                    Code    = "400",
                    Message = "参数WxId不存在"
                };
                actionContext.Response = await response.ToHttpResponseAsync();
            }
            else
            {
                var customerInfoCache = RedisCache.CreateInstance().HashGet <CustomerInfoCache>(ConstCacheKey.GetWxIdKey(), requestBase.WxId);
                if (customerInfoCache == null)
                {
                    ResponseBase response = new ResponseBase()
                    {
                        Success = false,
                        Code    = "401",
                        Message = "缓存失效,请重新生成二维码登录"
                    };
                    actionContext.Response = await response.ToHttpResponseAsync();
                }
            }


            base.OnAuthorization(actionContext);
        }