private async Task <T> PostRequest <T>(string url, Dictionary <string, string> parameters) where T : class { try { if (parameters.ContainsKey("token") == false) { parameters.Add("token", DingDingScrypt.jEncrypt("DING" + DingDingScrypt.GetTimeSpanByDate())); } var response = await _httpClient.PostAsync($"{url}?{GetUrlParameter(parameters)}", null); if (response.IsSuccessStatusCode) { var str = (await response.Content.ReadAsStringAsync()).Replace("\\", ""); if (str.Length >= 2) { var json = str.Remove(0, 1).Remove(str.Length - 2, 1); return(JsonConvert.DeserializeObject <T>(json)); } } } catch (Exception) { } return(default(T)); }
public async Task <IActionResult> MultipleRoundsAsync(string title, [FromHeader(Name = "x-dd-userid")] string userId) { if (string.IsNullOrEmpty(title)) { return(Ok()); } // 当前钉钉用户 var ddUser = await GetCurrentDDUserInfoAsync(userId); // 获取当前钉钉用户所在部门及父级部门 var departIds = GetCurrentDDUserDepartIds(ddUser); var parameters = new Dictionary <string, string>(); parameters.Add("title", DingDingScrypt.jEncrypt(title)); var url = await _settings.GetAsync(SettingKeys.BusinessInquiryUrl) ?? throw new ArgumentNullException(SettingKeys.BusinessInquiryUrl); var result = await PostRequest <List <ModularResponseResult> >($"{url}/api/Employee/GetSearchRestultByTitle", parameters); // None if (result?.Count <= 0) { // 未找到意图,记录问题 await _issueService.Record(new Unknown { Id = Guid.NewGuid(), Content = title, TimeOfOccurrence = DateTime.Now, Remarks = "此问题未匹配到意图", Type = 1 }); } // 过滤权限 var finalResult = await _permissionService.FilterModulePermissionAsync(departIds, result); return(Ok(finalResult)); }
public async Task <IActionResult> Final(string listName, string id, string colummName = "") { var parameters = new Dictionary <string, string>(); parameters.Add("listName", DingDingScrypt.jEncrypt(listName)); parameters.Add("id", DingDingScrypt.jEncrypt(id)); parameters.Add("colummName", DingDingScrypt.jEncrypt(colummName ?? "")); var url = await _settings.GetAsync(SettingKeys.BusinessInquiryUrl) ?? throw new ArgumentNullException(SettingKeys.BusinessInquiryUrl); var result = await PostRequest <List <ModularResponseFinnalResult> >($"{url}/api/Employee/GetSearchRestultByColumn", parameters); return(Ok(result?.Where(r => !string.IsNullOrEmpty(r.TValue)))); }