mem_MemberinfoController.cs 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Data.SqlClient;
  4. using System.Linq;
  5. using System.Threading.Tasks;
  6. using CoreEntity.DAL;
  7. using CoreEntity.Entity;
  8. using CoreEntity.ESEntity;
  9. using Elasticsearch.Net;
  10. using JCSoft.WX.Framework.Api;
  11. using Microsoft.AspNetCore.Mvc;
  12. using Microsoft.Extensions.Caching.Memory;
  13. using Nest;
  14. using Newtonsoft.Json;
  15. using PublicLibrary.Model;
  16. using SupplierWeb.Commonss;
  17. using SupplierWeb.Service;
  18. namespace SupplierWeb.Controllers
  19. {
  20. [Route("web/Mem_memberinformation")]
  21. public class Mem_MemberinfoController : BaseController
  22. {
  23. public Mem_MemberinfoController(IMemoryCache cache, IApiClient client,
  24. IEsClientProvider clientProvider) : base(cache, client, clientProvider)
  25. {
  26. }
  27. public IActionResult Index()
  28. {
  29. return View();
  30. }
  31. /// <summary>
  32. /// 会员中心列表
  33. /// </summary>
  34. /// <param name="data"></param>
  35. /// <param name="filters"></param>
  36. /// <returns></returns>
  37. [HttpPost]
  38. [Route("index")]
  39. public ActionResult index([FromBody]dynamic data, QueryFilter[] filters)
  40. {
  41. int start = 0;
  42. int pageIndex = 0;
  43. int pageSize = 1;
  44. string MemberPhone = "";
  45. if (data != null)
  46. {
  47. pageIndex = data.pageIndex;
  48. pageSize = data.pageSize;
  49. MemberPhone = data.query;
  50. String MemUsualPhoneSql = "";
  51. if (MemberPhone!=null && MemberPhone != "")
  52. {
  53. MemUsualPhoneSql = " and MemUsualPhone ='" + MemberPhone + "'";
  54. }
  55. data = new { query = "select * from mem_memberbase_p where 1=1 " + MemUsualPhoneSql + " limit "+ pageSize };
  56. }
  57. start = (pageIndex - 1) * pageSize;
  58. //将参数转换成JSON数据
  59. var json = JsonConvert.SerializeObject(data);
  60. //通过传来的SQL语句,转换成DSL语句
  61. string sql = Util.ElasticQuery("_sql/translate?format=json", "POST", json);
  62. //TranslateSqlResponse result = _LowLevelclient.Sql.Translate<TranslateSqlResponse>(PostData.String(json));
  63. //string sql = result.ApiCall.ResponseBodyInBytes();
  64. string from = "\"from\":" + start + ",";
  65. sql = sql.Insert(1, from);
  66. //通过转换的DSL语句,获取数据
  67. //var str = Util.ElasticQuery("mem_memberbase_p/_search?format=json", "POST", sql);
  68. int sourceIndex = sql.IndexOf("\"_source\":{");
  69. int sourceIndexEnd = sql.IndexOf("},", sourceIndex);
  70. string sourcestr = sql.Substring(sourceIndex, sourceIndexEnd - sourceIndex + 1);
  71. sql = sql.Replace(sourcestr, "\"_source\":{\"includes\":[\"*\"], \"excludes\": []}");
  72. int fieldIndex = sql.IndexOf("\"docvalue_fields\":[");
  73. int fieldIndexEnd = sql.IndexOf("],", fieldIndex);
  74. sql = sql.Remove(fieldIndex, fieldIndexEnd - fieldIndex + 2);
  75. PostData dsl = sql;
  76. var result = _LowLevelclient.Search<StringResponse>("mem_memberbase_p", dsl);
  77. var DynamicObject = JsonConvert.DeserializeObject<dynamic>(result.Body);
  78. List<dynamic> source = new List<dynamic>();
  79. //总数
  80. long totalCount = 0;
  81. //JSON转Root对象
  82. //将Root对象中的子对象取出来
  83. if (DynamicObject.hits.hits.Count > 0)
  84. {
  85. HitsItem<dynamic>[] hits = DynamicObject.hits.hits.ToObject<HitsItem<dynamic>[]>();
  86. //List<mem_MemberTerminal> _source = new List<mem_MemberTerminal>(0);
  87. //_source = inerhits.Select(x => x.entity()).ToList();
  88. foreach (HitsItem<dynamic> o in hits)
  89. {
  90. string[] phones = new string[1];
  91. phones[0] = o._source.MemUsualPhone;
  92. var phones1 = CommonDAL.getPhoneDecrypt(phones);
  93. string phoneStars = phones1[0];
  94. if (phoneStars != null && phoneStars.Length > 8) {
  95. string replaced = phoneStars.Substring(3,4);
  96. phoneStars = phoneStars.Replace(replaced,"****");
  97. }
  98. o._source.MemUsualPhoneCr = o._source.MemUsualPhone;
  99. o._source.MemUsualPhone = phoneStars;
  100. o._source.MemUsualPhoneOr = phones1[0];
  101. o._source._id = o._id;
  102. source.Add(o._source);
  103. }
  104. totalCount = DynamicObject.hits.total.value;
  105. //var jsonData = JsonConvert.SerializeObject(_source);
  106. }
  107. return Json(
  108. new
  109. {
  110. items = source,
  111. temsCount = totalCount,
  112. success =true
  113. });
  114. }
  115. [HttpPost]
  116. [Route("EditMemberBase")]
  117. public ActionResult EditMemberBase([FromBody]dynamic data)
  118. {
  119. var success = false;
  120. string docId = data._id;
  121. data.Remove("_id");
  122. data.MemUsualPhone = data.MemUsualPhoneCr;
  123. data.Remove("MemUsualPhoneOr");
  124. data.Remove("MemUsualPhoneCr");
  125. Dictionary<string, Object> doc = null;
  126. if (data.updates !=null && data.updates.Count>0)
  127. {
  128. docId = data.updates[0]._id;
  129. //var response = _esclient.Get<dynamic>(docId, idx => idx.Index("mem_memberbase_p")); // returns an IGetResponse mapped 1-to-1 with the Elasticsearch JSON response
  130. //var Source = response.Source; // the original document
  131. Dictionary<string, Object> memdoc = new Dictionary<string, Object>();
  132. foreach(var data1 in data.updates) {
  133. if (data1.update == "true" && data1.updateField != null
  134. && data1.updateFieldValue != null) {
  135. string updateField = data1.updateField;
  136. string updateFieldValue = data1.updateFieldValue;
  137. memdoc[updateField] = updateFieldValue;
  138. }
  139. }
  140. doc = memdoc;
  141. }
  142. else
  143. {
  144. doc = data.ToObject<Dictionary<string, Object>>();
  145. }
  146. data["LastUpdatedDate"] = DateTime.UtcNow;
  147. var jsons = JsonConvert.SerializeObject(new
  148. {
  149. doc = doc
  150. }
  151. );
  152. var param = new UpdateRequestParameters();
  153. param.Refresh = Refresh.True;
  154. var Response = _LowLevelclient.Update<StringResponse>("mem_memberbase_p", docId, jsons, param);
  155. dynamic t = JsonConvert.DeserializeObject(
  156. Response.Body
  157. );
  158. if (t.result == "updated")
  159. {
  160. success = true;
  161. }
  162. else
  163. {
  164. success = false;
  165. }
  166. return Json(
  167. new
  168. {
  169. msg = "",
  170. success = success
  171. });
  172. }
  173. }
  174. }