using System; using System.Collections.Generic; using System.Data.SqlClient; using System.Linq; using System.Threading.Tasks; using CoreEntity.Entity; using CoreEntity.ESEntity; using Elasticsearch.Net; using JCSoft.WX.Framework.Api; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Caching.Memory; using Nest; using Newtonsoft.Json; using PublicLibrary.Model; using SupplierWeb.Commonss; using SupplierWeb.Service; namespace SupplierWeb.Controllers { [Route("web/mem_memberexts")] public class mem_MemberextsController : BaseController { public mem_MemberextsController(IMemoryCache cache, IApiClient client, IEsClientProvider clientProvider) : base(cache, client,clientProvider) { } public IActionResult Index() { return View(); } /// /// 会员实名信息列表 /// /// /// /// [HttpPost] [Route("MemberextsByPhone")] public ActionResult MemberextsByPhone([FromBody]dynamic data, QueryFilter[] filters) { int start = 0; if (data != null) { data = new { query = "select * from mem_memberbase_p where MemUsualPhone='" + data.query+"'" }; } //将参数转换成JSON数据 var json = JsonConvert.SerializeObject(data); //通过传来的SQL语句,转换成DSL语句 string sql = Util.ElasticQuery("_sql/translate?format=json", "POST", json); //TranslateSqlResponse result = _LowLevelclient.Sql.Translate(PostData.String(json)); //string sql = result.ApiCall.ResponseBodyInBytes(); string from = "\"from\":" + start + ","; sql = sql.Insert(1, from); //通过转换的DSL语句,获取数据 //var str = Util.ElasticQuery("mem_memberbase_p/_search?format=json", "POST", sql); int sourceIndex = sql.IndexOf("\"_source\":{"); int sourceIndexEnd = sql.IndexOf("},", sourceIndex); string sourcestr = sql.Substring(sourceIndex, sourceIndexEnd - sourceIndex + 1); sql = sql.Replace(sourcestr, "\"_source\":{\"includes\":[\"*\"], \"excludes\": []}"); int fieldIndex = sql.IndexOf("\"docvalue_fields\":["); int fieldIndexEnd = sql.IndexOf("],", fieldIndex); sql = sql.Remove(fieldIndex, fieldIndexEnd - fieldIndex+2); PostData dsl = sql; var result = _LowLevelclient.Search("mem_memberbase_p", dsl); var DynamicObject = JsonConvert.DeserializeObject(result.Body); List source = new List(); //总数 long totalCount = 0; //JSON转Root对象 //将Root对象中的子对象取出来 if (DynamicObject.hits.hits.Count > 0) { HitsItem[] hits = DynamicObject.hits.hits.ToObject[]>(); //List _source = new List(0); //_source = inerhits.Select(x => x.entity()).ToList(); foreach (HitsItem o in hits) { o._source._id = o._id; source.Add(o._source); } totalCount = DynamicObject.hits.total.value; //var jsonData = JsonConvert.SerializeObject(_source); } return Json( new { items = source, success = true }); } [HttpPost] [Route("EditMemberExts")] public ActionResult EditMemberExts([FromBody]dynamic data) { var success = false; string docId = data._id; data.Remove("_id"); data["LastUpdatedDate"] = DateTime.UtcNow; var jsons = JsonConvert.SerializeObject(new{ doc = data } ); var param = new UpdateRequestParameters(); param.Refresh = Refresh.True; var Response = _LowLevelclient.Update("mem_memberbase_p",docId, jsons, param); dynamic t = JsonConvert.DeserializeObject( Response.Body ); if (t.result == "updated") { success = true; } else { success = false; } return Json( new { msg = "", success = success }); } } }