using AllBase; using AllBase.Model.Result; using TemuKJD.BaseForms; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using Work; using NaiBa.Util.Extension; using Newtonsoft.Json.Linq; using AllBase.Model.Result.WXResult; using System.Threading; namespace TemuKJD.ToolForms { public partial class GetAddressForm : BaseForm { public string AddressType { get; set; } = "jst"; public CancellationTokenSource cancellationTokenSource { get; set; } = new CancellationTokenSource(); public static List lstAddressInfo { get; set; } = new List(); public GetAddressForm() { InitializeComponent(); } private void SubAccountForm_Load(object sender, EventArgs e) { this.dgvAddress.BackgroundColor = Color.White; cmbType.Text = AddressType; cmbTypeFilter.Text = AddressType; Get1688Address(); } private void btnAddress_Click(object sender, EventArgs e) { if (string.IsNullOrWhiteSpace(cmbType.Text)) { BaseMsgForm.ShowError("供应商类型不能为空"); return; } if (string.IsNullOrWhiteSpace(txtCoid.Text)) { BaseMsgForm.ShowError("供应商ID不能为空"); return; } if (string.IsNullOrWhiteSpace(txtSupplierName.Text)) { BaseMsgForm.ShowError("供应商名称不能为空"); return; } if (string.IsNullOrWhiteSpace(txtUserName.Text)) { BaseMsgForm.ShowError("收件人不能为空"); return; } if (string.IsNullOrWhiteSpace(txtProvinceName.Text)) { BaseMsgForm.ShowError("省不能为空"); return; } if (string.IsNullOrWhiteSpace(txtCityName.Text)) { BaseMsgForm.ShowError("市不能为空"); return; } if (string.IsNullOrWhiteSpace(txtCountyName.Text)) { BaseMsgForm.ShowError("区不能为空"); return; } if (txtTelNumber.Text.Trim().Length != 11) { BaseMsgForm.ShowError("手机号格式不正确"); return; } if (string.IsNullOrWhiteSpace(txtDetailInfo.Text)) { BaseMsgForm.ShowError("详细地址不能为空"); return; } // 先逻辑删除再添加 StringBuilder sb = new StringBuilder(); sb.Append(UserLogin.GetSignaturex()); sb.Append("&coid=" + txtCoid.Text.Trim()); string urlDel = BaseClass.BuildObjString("product/wx_del_address"); string htmlDel = GetHtml.PostUtf8(urlDel, sb.ToString()); if (!htmlDel.Contains("\"code\":200")) { var msg = BaseRegex.GetStringJson(ref htmlDel, "msg"); if (string.IsNullOrEmpty(msg)) msg = htmlDel; BaseMsgForm.ShowError("出现异常,添加失败" + msg, "错误"); return; } var jAfterSale = new JObject(); jAfterSale["address_id"] = null; jAfterSale["user_name"] = txtUserName.Text.Trim(); jAfterSale["tel_number"] = txtTelNumber.Text.Trim(); jAfterSale["postal_code"] = txtPostalCode.Text.Trim(); jAfterSale["province_name"] = txtProvinceName.Text.Trim(); jAfterSale["city_name"] = txtCityName.Text.Trim(); jAfterSale["county_name"] = txtCountyName.Text.Trim(); jAfterSale["street_name"] = ""; jAfterSale["detail_info"] = txtDetailInfo.Text.Trim(); jAfterSale["number"] = txtCoid.Text.Trim(); jAfterSale["name"] = txtSupplierName.Text.Trim(); StringBuilder data = new StringBuilder(); data.Append(UserLogin.GetSignaturex()); data.Append("&coid=" + GetHtml.UrlEncodeUtf8(txtCoid.Text.Trim())); data.Append("&after_sale_json=" + GetHtml.UrlEncodeUtf8(JsonHelper.SerializeObject(jAfterSale))); data.Append("&supplier_name=" + GetHtml.UrlEncodeUtf8(txtSupplierName.Text.Trim())); data.Append("&type=" + cmbType.Text.Trim()); string url = BaseClass.BuildObjString("product/wx_add_mdy_after_sale"); string html = GetHtml.PostUtf8(url, data.ToString()).Trim(); if (!html.Contains("\"code\":200")) html = GetHtml.PostUtf8(url, data.ToString()).Trim(); if (html.Contains("\"code\":200")) { btnAddAddress.Text = "添加地址"; EmptyInput(); btnCancel.Visible = false; Get1688Address(); } else { var msg = BaseRegex.GetStringJson(ref html, "msg"); if (string.IsNullOrEmpty(msg)) msg = html; BaseMsgForm.ShowError("出现异常,添加失败" + msg, "错误"); return; } } private void EmptyInput() { txtCityName.Clear(); txtCoid.Clear(); txtCountyName.Clear(); txtDetailInfo.Clear(); txtPostalCode.Clear(); txtProvinceName.Clear(); txtStreetName.Clear(); txtSupplierName.Clear(); txtTelNumber.Clear(); txtUserName.Clear(); cmbType.Text = AddressType; } private void Get1688Address(int page = 1) { dgvAddress.Rows.Clear(); lstAddressInfo.Clear(); pbLoading.Visible = true; if (cancellationTokenSource != null) cancellationTokenSource.Cancel(); cancellationTokenSource = new CancellationTokenSource(); Task.Run(() => { string url = BaseClass.BuildObjString("product/wx_get_after_sale_list"); string data = UserLogin.GetSignaturex(); Invoke(new Action(() => { if (!string.IsNullOrEmpty(cmbTypeFilter.Text.Trim())) data += "&type=" + cmbTypeFilter.Text.Trim(); if (!string.IsNullOrEmpty(txtSearch.Text.Trim())) data += "&detail=" + txtSearch.Text.Trim(); data += "&page=" + page; data += "&page_size=" + ucSplitPage1.PageSize; })); string html = GetHtml.PostUtf8(url, data); if (!html.Contains("\"code\":200")) html = GetHtml.PostUtf8(url, data.ToString()).Trim(); if (html.Contains("\"code\":200")) { int count = BaseRegex.GetIntJson(ref html, "count"); int pageCount = Math.Ceiling(1.0 * count / ucSplitPage1.PageSize).ParseToInt(); pageCount = Math.Max(pageCount, 1); ucSplitPage1.TotalPage = pageCount; var userObj = JObject.Parse(html); foreach (JObject addressObj in userObj["data"]) { string addressStr = JsonHelper.SerializeObject(addressObj); WX1688AddressInfo addressInfo = JsonHelper.DeserializeJsonToObject(addressStr); lstAddressInfo.Add(addressInfo); string addressDetailStr = addressInfo.after_sale_json; string user_name = BaseRegex.GetStringJson(ref addressDetailStr, "user_name"); string tel_number = BaseRegex.GetStringJson(ref addressDetailStr, "tel_number"); string postal_code = BaseRegex.GetStringJson(ref addressDetailStr, "postal_code"); string province_name = BaseRegex.GetStringJson(ref addressDetailStr, "province_name"); string city_name = BaseRegex.GetStringJson(ref addressDetailStr, "city_name"); string county_name = BaseRegex.GetStringJson(ref addressDetailStr, "county_name"); string street_name = BaseRegex.GetStringJson(ref addressDetailStr, "street_name"); string detail_info = BaseRegex.GetStringJson(ref addressDetailStr, "detail_info"); string name = BaseRegex.GetStringJson(ref addressDetailStr, "name"); Invoke(new Action(() => { dgvAddress.Rows.Add( addressInfo.id, addressInfo.coid, addressInfo.supplier_name.IsNullOrEmpty() ? name : addressInfo.supplier_name, user_name, tel_number, postal_code, province_name, city_name, county_name, street_name, detail_info, addressInfo.type, "编辑", "删除", "同步"); })); } } Invoke(new Action(() => { pbLoading.Visible = false; })); }, cancellationTokenSource.Token); } private void btnCancel_Click(object sender, EventArgs e) { btnAddAddress.Text = "添加地址"; EmptyInput(); btnCancel.Visible = false; } private void dgvUser_CellContentClick(object sender, DataGridViewCellEventArgs e) { if (e.ColumnIndex < 0 || e.RowIndex < 0) return; string columname = dgvAddress.Columns[e.ColumnIndex].HeaderText; string coId = dgvAddress.Rows[e.RowIndex].Cells["colCoid"].Value.ToString(); var addressInfo = lstAddressInfo.FirstOrDefault(a => a.coid == coId); if (columname == "编辑") { btnAddAddress.Text = "保存地址"; btnCancel.Visible = true; btnCancel.Text = "取消編輯"; txtCoid.Text = dgvAddress.Rows[e.RowIndex].Cells["colCoid"].Value.ParseToString(); txtSupplierName.Text = dgvAddress.Rows[e.RowIndex].Cells["colSupplierName"].Value.ParseToString(); txtUserName.Text = dgvAddress.Rows[e.RowIndex].Cells["colUserName"].Value.ParseToString(); txtPostalCode.Text = dgvAddress.Rows[e.RowIndex].Cells["colPostalCode"].Value.ParseToString(); txtTelNumber.Text = dgvAddress.Rows[e.RowIndex].Cells["colTelNumber"].Value.ToString(); txtProvinceName.Text = dgvAddress.Rows[e.RowIndex].Cells["colProvinceName"].Value.ParseToString(); txtCityName.Text = dgvAddress.Rows[e.RowIndex].Cells["colCityName"].Value.ParseToString(); txtCountyName.Text = dgvAddress.Rows[e.RowIndex].Cells["colCountyName"].Value.ParseToString(); txtStreetName.Text = dgvAddress.Rows[e.RowIndex].Cells["colStreetName"].Value.ParseToString(); txtDetailInfo.Text = dgvAddress.Rows[e.RowIndex].Cells["colDetailInfo"].Value.ParseToString(); cmbType.Text = dgvAddress.Rows[e.RowIndex].Cells["colAddressType"].Value.ParseToString(); } if (columname == "删除") { if (BaseMsgForm.ShowConfirm("是否删除,删除后无法再次添加", "提示").DialogResult == DialogResult.OK) { Delete(coId); } } } public string Delete(string coid) { StringBuilder data = new StringBuilder(); data.Append(UserLogin.GetSignaturex()); data.Append("&coid=" + coid); string url = BaseClass.BuildObjString("product/wx_del_address"); string html = GetHtml.PostUtf8(url, data.ToString()); if (!string.IsNullOrEmpty(html)) { if (html.Contains("\"code\":200")) { BaseMsgForm.ShowInfo("删除成功", "提示"); Get1688Address(ucSplitPage1.CurrentPage); return ""; } var msg = BaseRegex.GetStringJson(ref html, "msg"); if (string.IsNullOrEmpty(msg)) msg = html; BaseMsgForm.ShowError(msg, "错误"); return "删除失败"; } BaseMsgForm.ShowError("返回异常", "错误"); return "删除失败"; } private void btnRefresh_Click(object sender, EventArgs e) { Get1688Address(); } private void pnlEmpty_Click(object sender, EventArgs e) { txtSearch.Clear(); cmbTypeFilter.Text = AddressType; } private void ucSplitPage1_PageChange(object obj) { Get1688Address(ucSplitPage1.CurrentPage); } } }