using System; using System.Collections.Generic; using System.Data.SqlClient; using System.Linq; using System.Threading.Tasks; using CoreEntity.DAL; 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_memberinformation")] public class Mem_memberinformationController : BaseController { public Mem_memberinformationController(IMemoryCache cache, IApiClient client, IEsClientProvider clientProvider) : base(cache, client, clientProvider) { } public IActionResult Index() { return View(); } /// /// 会员中心列表 /// /// /// /// [HttpPost] [Route("index")] public ActionResult index([FromBody]dynamic data, QueryFilter[] filters) { int start = 0; string MemberPhone = ""; if (data != null) { MemberPhone = data.query; data = new { query = "select * from mem_memberbase_p where MemUsualPhone='"+ MemberPhone+"'" }; } //将参数转换成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) { string[] phones = new string[1]; phones[0] = o._source.MemUsualPhone; var phones1 = CommonDAL.getPhoneDecrypt(phones); string phoneStars = phones1[0]; if (phoneStars != null && phoneStars.Length > 8) { string replaced = phoneStars.Substring(3,4); phoneStars = phoneStars.Replace(replaced,"****"); } o._source.MemUsualPhoneCr = o._source.MemUsualPhone; o._source.MemUsualPhone = phoneStars; o._source.MemUsualPhoneOr = phones1[0]; o._source._id = o._id; source.Add(o._source); } totalCount = DynamicObject.hits.total.value; //var jsonData = JsonConvert.SerializeObject(_source); } return Json( new { items = source, temsCount = totalCount, success =true }); } [HttpPost] [Route("EditMemberBase")] public ActionResult EditMemberBase([FromBody]dynamic data) { var success = false; string docId = data._id; data.Remove("_id"); data.MemUsualPhone = data.MemUsualPhoneCr; data.Remove("MemUsualPhoneOr"); data.Remove("MemUsualPhoneCr"); Dictionary doc = null; if (data.updates !=null && data.updates.Count>0) { docId = data.updates[0]._id; //var response = _esclient.Get(docId, idx => idx.Index("mem_memberbase_p")); // returns an IGetResponse mapped 1-to-1 with the Elasticsearch JSON response //var Source = response.Source; // the original document Dictionary memdoc = new Dictionary(); foreach(var data1 in data.updates) { if (data1.update == "true" && data1.updateField != null && data1.updateFieldValue != null) { string updateField = data1.updateField; string updateFieldValue = data1.updateFieldValue; memdoc[updateField] = updateFieldValue; } } doc = memdoc; } else { doc = data.ToObject>(); } data["LastUpdatedDate"] = DateTime.UtcNow; var jsons = JsonConvert.SerializeObject(new { doc = doc } ); 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 }); } } }