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
});
}
}
}