Esempio n. 1
0
    public static void log(string message)
    {
        Dictionary <string, object> data = new Dictionary <string, object> ();

        data["cmd"] = "client_log";
        Dictionary <string, object> biData = new Dictionary <string, object> ();

        biData["message"] = message;
        data["bi"]        = biData;
        HttpRequestService.sendRequest(data, null, null, BI_FORM_KEY);
    }
Esempio n. 2
0
    public static void login(string account = "anonymous")
    {
        Dictionary <string, object> data = new Dictionary <string, object> ();

        data["cmd"] = "biLogin";
        Dictionary <string, object> biData = new Dictionary <string, object> ();

        biData["account"] = account;
        data["bi"]        = biData;
        HttpRequestService.sendRequest(data, null, null, BI_FORM_KEY);
    }
Esempio n. 3
0
 void syncScoreData()
 {
     if (BIModel.Instance.BIScoreDataList.Count > 0)
     {
         Dictionary <string, object> data = new Dictionary <string, object> ();
         data["cmd"] = "level_up";
         data["v"]   = AppSettings.frontEndVersion.ToString();
         data["bi"]  = BIModel.Instance.BIScoreDataList;
         HttpRequestService.sendRequest(data, new HttpRequestService.RequestSuccessDelegate(onSyncScoreSuccess), null, BI_FORM_KEY);
     }
 }
        public void TestCreateUriWithParametersAreNull()
        {
            // Arrange
            var baseUri = new Uri("http://a.com");

            // Act & Assert
            Assert.AreEqual("http://a.com/",
                            HttpRequestService.CreateUri(baseUri, null, null, null).ToString());
            Assert.AreEqual("http://a.com/",
                            HttpRequestService.CreateUri(baseUri, Enumerable.Empty <string>(), new NameValueCollection(), string.Empty).ToString());
        }
Esempio n. 5
0
        /// <summary>
        /// 申请高佣活动/营销计划
        /// </summary>
        /// <param name="url"></param>
        /// <returns></returns>
        private static Tuple <string, string> GetGaoyong(string url, CookieCollection cookies)
        {
            Tuple <string, string> result           = null;
            CookieContainer        cookiesContainer = new CookieContainer();

            cookiesContainer.Add(cookies);
            string           content      = HttpRequestService.HttpGet(url, cookiesContainer);
            AuctionCodeModel searchResult = JsonConvert.DeserializeObject <AuctionCodeModel>(content);

            if (searchResult != null && searchResult.ok && searchResult.data != null)
            {
                string token = string.IsNullOrEmpty(searchResult.data.couponLinkTaoToken) ? searchResult.data.taoToken : searchResult.data.couponLinkTaoToken;
                string link  = string.IsNullOrEmpty(searchResult.data.couponShortLinkUrl) ? searchResult.data.shortLinkUrl : searchResult.data.couponShortLinkUrl;
                result = new Tuple <string, string>(token, link);
            }
            return(result);
        }
Esempio n. 6
0
        /// <summary>
        /// 保存采集到的商品
        /// </summary>
        /// <param name="loginToken"></param>
        /// <param name="goodsId"></param>
        /// <param name="goodsName"></param>
        /// <param name="price">商品价格</param>
        /// <param name="discountAmount">券价值</param>
        /// <param name="shareText"></param>
        /// <returns></returns>
        public long saveCollectionGoods(string loginToken, string goodsId, string goodsName, decimal price, decimal discountAmount, string shareText, string goodsPromotionUrl, string primaryImg)
        {
            Dictionary <string, string> data = new Dictionary <string, string>();

            data["token"]          = loginToken;
            data["goodsId"]        = goodsId;
            data["goodsName"]      = goodsName;
            data["price"]          = price.ToString("f2");
            data["discountAmount"] = discountAmount.ToString("f2");
            if (!string.IsNullOrEmpty(shareText))
            {
                data["shareText"] = shareText;
            }
            data["goodsPromotionUrl"] = goodsPromotionUrl;
            data["primaryImg"]        = primaryImg;
            return(HttpRequestService.PostToInt64(ApiDefineConst.saveCollectionGoods, data));
        }
        public static NeutrinoClient GetNeutrinoClient()
        {
            var builder = new ConfigurationBuilder()
                          .SetBasePath(Directory.GetCurrentDirectory())
                          .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
                          .AddEnvironmentVariables();
            var configuration = builder.Build();

            var serverAddress = configuration["ClientAddress"];

            var neutrinoClientOptions = new NeutrinoClientOptions();

            neutrinoClientOptions.Addresses   = new string[] { serverAddress };
            neutrinoClientOptions.SecureToken = configuration["SecureToken"];

            var httpRequestService = new HttpRequestService(neutrinoClientOptions);

            return(new NeutrinoClient(httpRequestService));
        }
        public void TestCreateUri()
        {
            // Arrange
            var baseUri = new Uri("http://a.com");
            IEnumerable <string> pathInfos = new List <string>
            {
                "a 1", "b 2"
            };
            var queryStrings = new NameValueCollection
            {
                { "c 3", "d 4" },
            };
            const string Fragment = "e 5";

            // Act
            var uri = HttpRequestService.CreateUri(baseUri, pathInfos, queryStrings, Fragment);

            // Assert
            Assert.AreEqual("http://a.com/a+1/b+2?c+3=d+4#e+5", uri.ToString());
        }
Esempio n. 9
0
        /// <summary>
        /// 退款处理
        /// </summary>
        /// <param name="param">参数</param>
        /// <returns>退款结果</returns>
        public static string Refund(RefunBusinessParam param)
        {
            SortedDictionary <string, string> paraTemp = new SortedDictionary <string, string>();

            paraTemp.Add("service", "refund_fastpay_by_platform_nopwd");
            paraTemp.Add("batch_no", param.batch_no);
            paraTemp.Add("refund_date", param.refund_date);
            paraTemp.Add("batch_num", param.batch_num);
            paraTemp.Add("detail_data", param.detail_data);

            ProcessBaseParam(param, paraTemp);
            AddSign(paraTemp);

            var request = new Request(Config.Gateway)
            {
                HttpMethod = HttpMethod.Post, Parameters = paraTemp
            };
            var response = HttpRequestService.GetHttpRequest(request);
            var reslt    = ProcessXmlData(response);

            return(reslt);
        }
Esempio n. 10
0
 /// <summary>
 /// 检查淘宝登录
 /// </summary>
 /// <param name="tbToken"></param>
 /// <returns></returns>
 public static bool checkLogin()
 {
     try
     {
         string          url = string.Format("http://pub.alimama.com/pubauc/getCommonCampaignByItemId.json?itemId={0}&t={1}&_tb_token_={2}&pvid=", "", getClientMsgId(), MyUserInfo.GetTbToken());
         CookieContainer cookiesContainer = new CookieContainer();
         cookiesContainer.Add(MyUserInfo.cookies);
         string content = HttpRequestService.HttpGet(url, cookiesContainer);
         if (content.Contains("html"))
         {
             return(false);
         }
         else
         {
             return(true);
         }
     }
     catch (Exception)
     {
         return(false);
     }
 }
Esempio n. 11
0
        public async Task TestDoExchangeAsync()
        {
            // Arrange
            Cache cacheThatWasSet = null;

            mockCacheService.Setup(_ => _.SetCache(It.IsAny <Cache>()))
            .Callback <Cache>((cache) => cacheThatWasSet = cache);

            SetupHttpClientForExchangePost();
            SetupHttpClientFactory();

            SetupHttpRequestService();

            httpRequestService = new HttpRequestService(mockHttpClientFactory.Object,
                                                        mockCacheService.Object, trueLayerCredentialsOptions);

            // Act
            await httpRequestService.DoExchangeAsync(dummyCode);

            // Assert
            Assert.NotNull(cacheThatWasSet.ExchangeResponseDTO);
            Assert.Equal(cacheThatWasSet.ExchangeResponseDTO.AccessToken, dummyAccessToken);
        }
Esempio n. 12
0
 /// <summary>
 /// 加载公众号二维码
 /// </summary>
 private void LoadMyQrCode()
 {
     myQrCode.Image = Resources.loading;
     new System.Threading.Thread(() =>
     {
         string url = HotJavaApi.SubscribeForBind(MyUserInfo.LoginToken);
         if (!string.IsNullOrEmpty(url))
         {
             var bytes = HttpRequestService.GetNetWorkImageData(url);
             if (bytes != null)
             {
                 SetQrCodeImage(Image.FromStream(new MemoryStream(bytes)), false);
             }
             else
             {
                 SetQrCodeImage(Resources.loading);
             }
         }
     })
     {
         IsBackground = true
     }.Start();
 }
    void OnClick()
    {
        long curTime = (long)System.DateTime.Now.Subtract(baseDate).TotalSeconds;

        if (curTime - _lastClickTime < 10)
        {
            GameObject TipObj   = GameObject.Find("MFP Gift Panel Portrait/Tip1");
            UILabel    tipLabel = TipObj.GetComponent <UILabel>();
            tipLabel.text = Language.Get("INPUT_TOO_FAST");
            return;
        }

        _lastClickTime = (long)System.DateTime.Now.Subtract(baseDate).TotalSeconds;             // Can't send new request in 10 seconds

        GameObject labelObj = GameObject.Find("MFP Gift Panel Portrait/Input/Label");
        UILabel    labelCom = labelObj.GetComponent <UILabel>();

        Dictionary <string, object> data = new Dictionary <string, object> ();

        data["cmd"] = "convert";
        data["id"]  = labelCom.text;

        HttpRequestService.sendRequest(data, new HttpRequestService.RequestSuccessDelegate(onAskGiftSuccess), new HttpRequestService.RequestFailDelegate(onAskGiftFail));
    }
Esempio n. 14
0
        public async Task <GetTokenResultDto> GetToken(string adminName, string adminPwd)
        {
            string jwtStr = string.Empty;

            // 判断是否为空
            if (string.IsNullOrEmpty(adminName) || string.IsNullOrEmpty(adminPwd))
            {
                // 账号或密码不能为空
                throw new Exception("Account or password cannot be empty.");
            }

            var result = await HttpRequestService.HttpGetAsync(AppConfigurtaionService.Configuration["ProjectInfo:ApiUrl"]
                                                               + string.Format("/api/Admin/IsExistFromToken?adminName={0}&adminPwd={1}", adminName, adminPwd));

            //StringBuilder resultStringBuilder = new StringBuilder();

            // 去除转义字符
            //foreach (char c in result.ToString())
            //{
            //    if (c != '\\') resultStringBuilder.Append(c);
            //}
            // 返回字符串转换为JSON对象
            var admin = JsonConvert.DeserializeObject <Model.Entity.Admin>(result);

            TokenJWT tokenModel = new TokenJWT();

            tokenModel.Id        = admin.Id;
            tokenModel.AdminName = admin.AdminName;

            jwtStr = JWTService.IssueJWT(tokenModel);

            return(new GetTokenResultDto()
            {
                JWT = "Bearer " + jwtStr,
            });
        }
Esempio n. 15
0
        /// <summary>
        /// Login user, set and return login cookies
        /// </summary>
        /// <param name="credentials"></param>
        /// <returns> Login cookies </returns>
        public CookieContainer Authorize(Credential credentials)
        {
            string response = "";

            try
            {
                HttpRequestService httpRequestService = new HttpRequestService();
                response = httpRequestService.Send(url, cookieContainer, credentials, false).Substring(48, 30);
            }
            catch
            {
                new LogService().Add("Wrong URL~");
                throw new Exception("Wrong URL~");
            }


            if (response == "Bakalari - login to the system")
            {
                new LogService().Add("Wrong credentials!");
                throw new Exception("Wrong credentials!");
            }

            return(cookieContainer);
        }
Esempio n. 16
0
        public void New_WithNoArgs_AssignsHttpClient()
        {
            var newService = new HttpRequestService();

            Assert.IsNotNull(newService.HttpClient);
        }
Esempio n. 17
0
 private void SetupHttpRequestService()
 {
     httpRequestService = new HttpRequestService(mockHttpClientFactory.Object,
                                                 mockCacheService.Object, trueLayerCredentialsOptions);
 }
Esempio n. 18
0
        /// <summary>
        /// 获取高佣活动和营销计划的淘口令,Item1 淘口令,Item2 短链
        /// </summary>
        /// <param name="goodsUrl"></param>
        /// <param name="goodsId"></param>
        /// <param name="pid">Pid</param>
        /// <returns></returns>
        public static Tuple <string, string> GetGaoYongToken(string goodsUrl, string goodsId, string pid, string tbToken, CookieCollection cookies, out bool isLogin)
        {
            Tuple <string, string> resultTuple = null;

            isLogin = true;
            try
            {
                //PID  mm_aaaa_bbbb_cccc
                //aaaa:memberid
                //bbbb:siteid
                //ccc:adzoneid

                string dictKey = string.Format("{0}_{1}", pid, goodsId);
                //判断同商品相同的推广位,是否已经申请过淘口令
                if (tokenDict.ContainsKey(dictKey))
                {
                    string _token = string.Empty;
                    tokenDict.TryGetValue(dictKey, out resultTuple);
                    return(resultTuple);
                }
                //淘宝未登录,请登录淘宝
                if (cookies == null)
                {
                    isLogin     = false;
                    resultTuple = new Tuple <string, string>("", "");
                    return(resultTuple);
                }


                var pids = pid.Replace("mm_", "").Split('_');

                if (pids.Length != 3)
                {
                    return(resultTuple);
                }

                string          adzoneid         = pids[2];
                string          siteid           = pids[1];
                string          searchUrl        = string.Format("http://pub.alimama.com/items/search.json?q={0}&_t={1}&auctionTag=&perPageSize=40&shopTag=&t={1}&_tb_token_={2}&pvid=", HttpUtility.UrlEncode(goodsUrl), getClientMsgId(), tbToken);
                CookieContainer cookiesContainer = new CookieContainer();
                cookiesContainer.Add(cookies);
                string  content     = HttpRequestService.HttpGet(searchUrl, cookiesContainer);
                decimal tkRate      = 0;
                decimal eventRate   = 0;
                bool    tkMktStatus = false;
                bool    resultOk    = false;
                if (!string.IsNullOrEmpty(content))
                {
                    try
                    {
                        TaobaoSearchResultModel searchResult = JsonConvert.DeserializeObject <TaobaoSearchResultModel>(content);
                        if (searchResult != null && searchResult.ok && searchResult.data.pageList != null)
                        {
                            //通用计划
                            tkRate = searchResult.data.pageList[0].tkRate;

                            if (!string.IsNullOrEmpty(searchResult.data.pageList[0].eventRate))
                            {
                                eventRate = Convert.ToDecimal(searchResult.data.pageList[0].eventRate);
                            }

                            if (!string.IsNullOrEmpty(searchResult.data.pageList[0].tkMktStatus))
                            {
                                tkMktStatus = Convert.ToInt32(searchResult.data.pageList[0].tkMktStatus) == 1;
                            }
                            resultOk = true;
                        }
                    }
                    catch (Exception)
                    {
                    }
                }
                if (resultOk)
                {
                    //判断是否是营销计划
                    if (tkMktStatus && tkRate > eventRate)
                    {
                        //开始申请营销计划佣金
                        string url = string.Format("http://pub.alimama.com/common/code/getAuctionCode.json?auctionid={0}&adzoneid={1}&siteid={2}&scenes=1&t={3}&_tb_token_={4}&pvid=", goodsId, adzoneid, siteid, getClientMsgId(), tbToken);
                        resultTuple = GetGaoyong(url, cookies);
                        if (resultTuple != null)
                        {
                            tokenDict[dictKey] = resultTuple;
                            return(resultTuple);
                        }
                    }
                    else //判断是否有高佣金
                    {
                        //获取更多定向计划数据
                        string url = string.Format("http://pub.alimama.com/pubauc/getCommonCampaignByItemId.json?itemId={0}&t={1}&_tb_token_={2}&pvid=", goodsId, getClientMsgId(), tbToken);
                        cookiesContainer = null;
                        cookiesContainer = new CookieContainer();
                        cookiesContainer.Add(cookies);
                        content = HttpRequestService.HttpGet(url, cookiesContainer);
                        if (content.Contains("html"))
                        {
                            isLogin     = false;
                            resultTuple = new Tuple <string, string>("", "");
                            return(resultTuple);
                        }
                        else
                        {
                            try
                            {
                                TaobaoCommonCampaignItemsModel items = JsonConvert.DeserializeObject <TaobaoCommonCampaignItemsModel>(content);
                                if (items != null && items.ok && items.data != null && items.data.Count > 0)
                                {
                                    //过滤人工审核的佣金计划
                                    var data              = items.data.FindAll(r => r.manualAudit == 0);
                                    var listData          = data.OrderByDescending(r => r.commissionRate).ToList();
                                    TaobaoCommonItem item = listData[0];
                                    //如果定向佣金大于通用和高佣活动的佣金
                                    if (tkRate < item.commissionRate && eventRate < item.commissionRate && !tkMktStatus)
                                    {
                                        tkRate    = 0;
                                        eventRate = 0;
                                    }
                                }
                            }
                            catch (Exception) { }
                            //如果高佣活动佣金大于通用佣金
                            if (eventRate > tkRate)
                            {
                                //开始申请高佣活动
                                url         = string.Format("http://pub.alimama.com/common/code/getAuctionCode.json?auctionid={0}&adzoneid={1}&siteid={2}&scenes=3&channel=tk_qqhd&t={3}&_tb_token_={4}&pvid=", goodsId, adzoneid, siteid, getClientMsgId(), tbToken);
                                resultTuple = GetGaoyong(url, cookies);
                                if (resultTuple != null)
                                {
                                    tokenDict[dictKey] = resultTuple;
                                    return(resultTuple);
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                log.Error(string.Format("GetGaoYongToken:message:{0},StackTrace:{1}", ex.Message, ex.StackTrace));
                return(resultTuple);
            }
            return(resultTuple);
        }
Esempio n. 19
0
 public JsonResult Httpreq(HttpRequestModel model)
 {
     return(Json(HttpRequestService.Process(model)));
 }
    // Use this for initialization
    void Start()
    {
        //int x = PlayerPrefs.GetInt("TUTORIAL_TORCH_ITEM", 0);
        //PlayerPrefs.SetInt("TUTORIAL_TORCH_ITEM", 1);
        // OutputLevelScores
        //PlayerPrefs.SetInt("key_360", 1);

        // record that user has already get to map level
        QihooSnsModel.Instance.goToMapLevelOnce = true;
        if (QihooSnsModel.Instance.Using360Login)
        {
            //UserSNSManager.Instance.showFloatWnd();
        }

        // [1] sync cached high scores
        HighScoreModel.Instance.Deserialize();
        Dictionary <int, int> cachedHighScores = HighScoreModel.Instance._highScores;

        if (cachedHighScores != null && cachedHighScores.Count > 0)
        {
            Dictionary <string, object> data = new Dictionary <string, object> ();
            data["cmd"]        = "saveData";
            data["deviceId"]   = SystemInfo.deviceUniqueIdentifier;
            data["platformId"] = QihooSnsModel.Instance.UserID;
            data["levelScore"] = HighScoreModel.Instance._highScores;

            HttpRequestService.sendRequest(data, new HttpRequestService.RequestSuccessDelegate(onGetNoticesSuccess), null);
        }

        // [2] sync user friend scores
        Dictionary <string, object> data1 = new Dictionary <string, object> ();

        data1["cmd"]         = "getFriend";
        data1["platformIds"] = QihooSnsModel.Instance.FriendListStr;
        //data1["platformIds"] ="599315361,29886669,384531921,630180399,291875798,291201194";
        //data1["platformIds"] = "622792586,384531921,291201194,291257815,371301281";
        //data1["platformIds"] = "612146777,291201194,404357426,317138868,291257815,401061065,622792586,599315361,371301281,29886669,626838463,271149288";
        long curTime = LivesSystem.TimeSeconds();

        if (data1["platformIds"] != "" && curTime - QihooSnsModel.Instance.LastGetFriendTime > 300)
        {
            // no secode get friend service in 5 minutes
            QihooSnsModel.Instance.LastGetFriendTime = LivesSystem.TimeSeconds();
            HttpRequestService.sendRequest(data1, new HttpRequestService.RequestSuccessDelegate(onGetFriendScoreSuccess), new HttpRequestService.RequestFailDelegate(onGetFriendScoreFailure));
        }
        else
        {
            UpdateFriendNameInMap();
        }


        /*
         * if (QihooSnsModel.Instance.FriendListStr == "")
         * {
         *      data1["platformIds"] = QihooSnsModel.Instance.FriendListStr + "1,2,3,4,5,6,7";
         * }
         * else
         * {
         *      data1["platformIds"] = QihooSnsModel.Instance.FriendListStr + ",1,2,3,4,5,6,7";
         * }
         */

        // [3] sync current level with 360
        if (QihooSnsModel.Instance.Using360Login)
        {
            UserSNSManager.Instance.UploadData(QihooSnsModel.Instance.UserID, UserManagerCloud.Instance.CurrentUser.LastFinishedLvl.ToString());
        }
    }
 public ToDoItemsHTTPDataService()
 {
     _httpRequestService = new HttpRequestService();
 }
        public void TestGetResponse(string method, bool isAsync)
        {
            using (ShimsContext.Create())
            {
                // Arrange
                var baseUriMapping = new BaseUriMapping {
                    { "TargetSite", "http://yahoo.com" }
                };
                var userAgentMapping = new UserAgentMapping {
                    { "IE11", "Mozilla IE11" }
                };

                var httpRequest = new HttpRequest
                {
                    BaseUri   = "TargetSite",
                    UserAgent = "IE11",
                    Method    = method,
                    Headers   = new NameValueCollection {
                        { "test", "test-value" }
                    },
                    PathInfos = new List <string> {
                        "test.aspx"
                    },
                    Cookies = new NameValueCollection {
                        { "test", "test-value" }
                    },
                };

                var httpContent = new StringContent("Hello World");
                httpContent.Headers.ContentType  = new MediaTypeHeaderValue("text/html");
                httpContent.Headers.LastModified = DateTimeOffset.Parse("Tue, 16 Jul 2013 11:50:35 GMT");

                var httpResponseMessage = new HttpResponseMessage
                {
                    StatusCode     = HttpStatusCode.OK,
                    Content        = httpContent,
                    RequestMessage = new HttpRequestMessage {
                        RequestUri = new Uri("http://yahoo.com/test.aspx")
                    }
                };

                httpResponseMessage.Headers.Add("test", "test-value");

                var cookies = new CookieContainer();
                cookies.Add(new Cookie("test", "test-value", "", "yahoo.com"));

                ShimHttpClientHandler.AllInstances.CookieContainerGet = h => cookies;
                ShimHttpClient.AllInstances.GetAsyncUri             = (client, task) => Task.FromResult(httpResponseMessage);
                ShimHttpClient.AllInstances.PostAsyncUriHttpContent = (client, task, c) => Task.FromResult(httpResponseMessage);
                ShimHttpClient.AllInstances.PutAsyncUriHttpContent  = (client, task, c) => Task.FromResult(httpResponseMessage);
                ShimHttpClient.AllInstances.DeleteAsyncUri          = (client, task) => Task.FromResult(httpResponseMessage);

                // Act
                var httpRequestService = new HttpRequestService(baseUriMapping, userAgentMapping, "http://proxy.com");
                var httpResponse       = isAsync
                    ? httpRequestService.GetResponseAsync(httpRequest).Result
                    : httpRequestService.GetResponse(httpRequest);

                // Assert
                Assert.AreEqual(1, httpResponse.Headers.Count);
                Assert.AreEqual(1, httpResponse.Cookies.Count);
                Assert.AreEqual(DateTimeOffset.Parse("Tue, 16 Jul 2013 11:50:35 GMT", CultureInfo.InvariantCulture), httpResponse.LastModified);
                Assert.AreEqual("Hello World", httpResponse.Contents);
                Assert.AreEqual(HttpStatusCode.OK, httpResponse.StatusCode);
                Assert.AreEqual(new Uri("http://yahoo.com/test.aspx"), httpResponse.Uri);
            }
        }
Esempio n. 23
0
        public async Task <IHttpActionResult> DelMsg()
        {
            string uid     = HttpContext.Current.Request.Form["uid"];
            string msgid   = HttpContext.Current.Request.Form["msgid"];
            string touid   = HttpContext.Current.Request.Form["touid"];
            string isgroup = HttpContext.Current.Request.Form["isgroup"];

            if (string.IsNullOrEmpty(uid))
            {
                return(Json(new
                {
                    Success = false,
                    Content = "",
                    Error = "用户id为空",
                    Message = "操作失败",
                    Count = 0,
                    Total = 0
                }));
            }
            if (string.IsNullOrEmpty(msgid))
            {
                return(Json(new
                {
                    Success = false,
                    Content = "",
                    Error = "消息id为空",
                    Message = "操作失败",
                    Count = 0,
                    Total = 0
                }));
            }
            if (string.IsNullOrEmpty(touid))
            {
                return(Json(new
                {
                    Success = false,
                    Content = "",
                    Error = "接收人id为空",
                    Message = "操作失败",
                    Count = 0,
                    Total = 0
                }));
            }
            if (string.IsNullOrEmpty(isgroup))
            {
                return(Json(new
                {
                    Success = false,
                    Content = "",
                    Error = "isgroup为空",
                    Message = "操作失败",
                    Count = 0,
                    Total = 0
                }));
            }
            try
            {
                var msgidInt = Convert.ToInt32(msgid);
                var query    = _unitOfWork.DIMMsg.Get(p => p.ID == msgidInt && p.CreateUser == uid && p.TouID == touid && p.IsDel != 1).FirstOrDefault();
                if (query != null)
                {
                    if (query.Type == "2")
                    {
                        //如果是图片消息,则执行软删除
                        query.IsDel = 1;
                        //更新下载链接
                        query.FileUrl = ConfigHelper.GetConfigString("DownloadDfile");
                        _unitOfWork.DIMMsg.Update(query);
                    }
                    else
                    {
                        //如果是其他类型消息,则直接删除
                        _unitOfWork.DIMMsg.Delete(query);
                    }
                    var result = _unitOfWork.Save();
                    if (result.ResultType == OperationResultType.Success)
                    {
                        Task.Run(() =>
                        {
                            //查询缓存中的消息
                            if (isgroup == "1")
                            {
                                var touids = new List <string>();
                                touids     = touid.Length == 36 ? HttpRequestService.GetWorkGroupMembers(touid) : HttpRequestService.GetSelfGroupMembers(touid);
                                foreach (var id in touids)
                                {
                                    var msgUnread = MsgServices.GetRedisKeyValue <Msg>("IMGroupMsg", touid + id);
                                    if (msgUnread != null && msgUnread.Any())
                                    {
                                        var newmsgUnread = msgUnread.Where(p => p.id0 != msgid).ToList();
                                        RedisHelper.Hash_Remove("IMGroupMsg", touid + id);
                                        if (newmsgUnread.Any())
                                        {
                                            MsgServices.ResetRedisKeyValue <Msg>("IMGroupMsg", touid + id, newmsgUnread);
                                        }
                                        else
                                        {
                                            RedisHelper.Hash_Remove("IMGroupMsg", touid + id);
                                            var groups = RedisHelper.Hash_Get <List <String> >("IMUnreadGroupMsg", id);
                                            if (groups != null && groups.Any() && groups.Contains(touid))
                                            {
                                                groups.Remove(touid);
                                                //重新存储未读消息群组的Redis变量
                                                RedisHelper.Hash_Remove("IMUnreadGroupMsg", id);
                                                RedisHelper.Hash_Set <List <String> >("IMUnreadGroupMsg", id, groups);
                                            }
                                        }
                                    }
                                }
                            }
                            else if (isgroup == "0")
                            {
                                var msgUnread = MsgServices.GetRedisKeyValue <Msg>("IMMsg", touid);
                                if (msgUnread != null && msgUnread.Any())
                                {
                                    var newmsgUnread = msgUnread.Where(p => p.id0 != msgid).ToList();
                                    RedisHelper.Hash_Remove("IMMsg", touid);
                                    if (newmsgUnread.Any())
                                    {
                                        MsgServices.ResetRedisKeyValue <Msg>("IMMsg", touid, newmsgUnread);
                                    }
                                    else
                                    {
                                        RedisHelper.Hash_Remove("IMMsg", touid);
                                    }
                                }
                            }
                        });

                        return(Json(new
                        {
                            Success = true,
                            Content = "",
                            Error = "",
                            Message = "操作成功",
                            Count = 0,
                            Total = 0
                        }));
                    }
                    return(Json(new
                    {
                        Success = false,
                        Content = "",
                        Error = result.Message,
                        Message = "操作失败",
                        Count = 0,
                        Total = 0
                    }));
                }
                return(Json(new
                {
                    Success = false,
                    Content = "",
                    Error = "未查询到对应的消息",
                    Message = "操作失败",
                    Count = 0,
                    Total = 0
                }));
            }
            catch (Exception ex)
            {
                return(Json(new { Success = false, Content = "", Error = ex.ToString(), Message = "操作失败", Count = 0, Total = 0 }));
            }
        }