318 lines
13 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|