Files
KJD_WebService/TEMUKJD/ToolForms/GetAddressForm.cs
T
2026-03-26 21:34:59 +08:00

318 lines
13 KiB
C#

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<WX1688AddressInfo> lstAddressInfo { get; set; } = new List<WX1688AddressInfo>();
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<WX1688AddressInfo>(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);
}
}
}