519 lines
25 KiB
C#
519 lines
25 KiB
C#
using AllBase;
|
|
using AllBase.Extension;
|
|
using AllBase.Helper;
|
|
using AllBase.Model.Result;
|
|
using TemuKJD.Extension;
|
|
using TemuKJD.KJDForms.BaseForms;
|
|
using NaiBa.Util.Extension;
|
|
using Newtonsoft.Json.Linq;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Drawing;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Forms;
|
|
using Work.BLL.Product;
|
|
|
|
namespace TemuKJD.KJDForms.SalesCenterForms
|
|
{
|
|
public partial class CouponShopForm : Form
|
|
{
|
|
private CheckBox chkSelectAll = null;
|
|
|
|
DouShopLoginInfo shop = null;
|
|
public CouponForm couponForm = null;
|
|
public bool isGetProductSalesSuccess = false;
|
|
public Dictionary<string, int> dicProductSales = new Dictionary<string, int>();
|
|
public List<DouProductWithSalesListInfo> productList = new List<DouProductWithSalesListInfo>();
|
|
|
|
public CouponShopForm(DouShopLoginInfo _shop)
|
|
{
|
|
InitializeComponent();
|
|
shop = _shop;
|
|
}
|
|
|
|
private void CouponShopForm_Load(object sender, EventArgs e)
|
|
{
|
|
chkSelectAll = dgvProduct.Columns["colSelect"].AddHeaderCheckBox(HorizontalAlignment.Center, 0, 0, null, null, false);
|
|
dgvProduct.Columns["colSelect"].HeaderText = "";
|
|
|
|
chkSelectAll.Width = chkSelectAll.Height = 13;
|
|
chkSelectAll.CheckedChanged += chkSelectAll_CheckedChanged;
|
|
}
|
|
|
|
private void chkSelectAll_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
if (!chkSelectAll.Checked)
|
|
{
|
|
foreach (DataGridViewRow row in dgvProduct.Rows)
|
|
{
|
|
row.Cells["colSelect"].Value = false;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
foreach (DataGridViewRow row in dgvProduct.Rows)
|
|
{
|
|
row.Cells["colSelect"].Value = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
public void GetProduct(decimal priceMin, decimal priceMax, int salesMin, int salesMax, List<string> productName = null, List<string> filterWords = null)
|
|
{
|
|
if (shop == null)
|
|
return;
|
|
|
|
ShowVisitorMessage("");
|
|
foreach (DataGridViewRow r in this.dgvProduct.Rows)
|
|
{
|
|
r.Cells["colSales"].Value = "获取中";
|
|
}
|
|
foreach (var p in productList)
|
|
{
|
|
p.sell_num = null;
|
|
}
|
|
|
|
List<Task> tList = new List<Task>();
|
|
|
|
var t1 = Task.Run(() =>
|
|
{
|
|
int page = 0;
|
|
int pageSize = 100;
|
|
int totalNum = 99999;
|
|
while (page < 100)
|
|
{
|
|
if (couponForm == null || couponForm.cancellationTokenSource.IsCancellationRequested)
|
|
break;
|
|
|
|
page++;
|
|
var html = new ShopProductBLL().GetShopProductListData(shop, 0, page, pageSize);
|
|
//测试查找商品详情
|
|
//Work.DouyinApiClass.DouyinApi api = new Work.DouyinApiClass.DouyinApi(shop);
|
|
//api.JsonData = new Dictionary<string, string>();
|
|
//api.JsonData["product_id"] = "3558439046600598747";
|
|
//var detail = api.GetProductDetail();
|
|
|
|
while (!html.Contains("\"code\":10000"))
|
|
{
|
|
Thread.Sleep(1000);
|
|
html = new ShopProductBLL().GetShopProductListData(shop, 0, page, pageSize);
|
|
}
|
|
totalNum = BaseRegex.GetIntJson(ref html, "total");
|
|
|
|
try
|
|
{
|
|
JObject jObj = JObject.Parse(html);
|
|
var jObjDataStr = jObj["data"]?["data"]?.ToString();
|
|
if (!string.IsNullOrEmpty(jObjDataStr))
|
|
{
|
|
var addList = JsonHelper.DeserializeJsonToList<DouProductWithSalesListInfo>(jObjDataStr);
|
|
if (addList != null)
|
|
{
|
|
// 有关键词或商品id的,过滤符合关键词
|
|
if (productName != null && productName.Any())
|
|
addList = addList.Where(p => productName.Any(n => p.name.Contains(n) || p.product_id.ToString().Contains(n))).ToList();
|
|
|
|
if (filterWords != null && filterWords.Any())
|
|
addList = addList.Where(p => !filterWords.Any(f => p.name.Contains(f) || p.product_id.ToString().Contains(f))).ToList();
|
|
|
|
productList.AddRange(addList);
|
|
productList = productList.DistinctBy(p => p.product_id).ToList();
|
|
}
|
|
foreach (var prod in addList)
|
|
{
|
|
var row = dgvProduct.Rows.Cast<DataGridViewRow>().FirstOrDefault(r => r.Cells["colProductId"].Value.ToString() == prod.product_id.ToString());
|
|
Invoke(new Action(() =>
|
|
{
|
|
if (row == null)
|
|
{
|
|
dgvProduct.Rows.Add(
|
|
false,
|
|
prod.product_id,
|
|
prod.name,
|
|
"获取中",
|
|
prod.discount_price / 100,
|
|
BaseClass.StampToDateTime((int)prod.create_time));
|
|
}
|
|
else
|
|
{
|
|
row.Cells["colSales"].Value = "获取中";
|
|
row.Cells["colPrice"].Value = prod.discount_price / 100;
|
|
row.Cells["colCreateTime"].Value = BaseClass.StampToDateTime((int)prod.create_time);
|
|
}
|
|
}));
|
|
}
|
|
}
|
|
var totalPage = Math.Ceiling(totalNum / (pageSize * 1M));
|
|
var message = "已获取:" + page + "页,共" + Math.Ceiling(totalNum / (pageSize * 1M)) + "页,商品获取中...";
|
|
Invoke(new Action(() =>
|
|
{
|
|
this.statusBar.lblTaskStatus.Text = message;
|
|
this.statusBar.pgbTaskProgress.Value = page;
|
|
this.statusBar.pgbTaskProgress.Text = page + "/" + totalPage;
|
|
this.statusBar.pgbTaskProgress.Maximum = (int)totalPage;
|
|
}));
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
BaseMsgForm.ShowError("获取商品发生错误:" + ex.Message);
|
|
}
|
|
|
|
if (page * pageSize >= totalNum)
|
|
break;
|
|
}
|
|
});
|
|
tList.Add(t1);
|
|
|
|
if (ShopForms.ShopListForm.Instance == null)
|
|
ShopForms.ShopListForm.Instance = new ShopForms.ShopListForm();
|
|
ShopForms.ShopListForm.Instance.CheckShopLogin(new string[] { shop.ShopAccount }, false);
|
|
|
|
var t2 = Task.Run(() =>
|
|
{
|
|
if (shop.LoginStatus == "登录成功")
|
|
couponForm.GetSales(this.shop);
|
|
|
|
var rowsTemp = dgvProduct.Rows.Cast<DataGridViewRow>().ToList();
|
|
rowsTemp.Reverse();
|
|
foreach (var r in rowsTemp)
|
|
{
|
|
try
|
|
{
|
|
if (r.Cells["colPrice"].Value.ParseToDecimal() < priceMin || r.Cells["colPrice"].Value.ParseToDecimal() > priceMax
|
|
|| r.Cells["colSales"].Value.ParseToDecimal() < salesMin || r.Cells["colSales"].Value.ParseToDecimal() > salesMax
|
|
|| (productName?.Count > 0 && !productName.Any(n => r.Cells["colProductName"].Value.ToString().Contains(n) || r.Cells["colProductId"].Value.ToString().Contains(n)))
|
|
|| (filterWords?.Count > 0 && filterWords.Any(f => r.Cells["colProductName"].Value.ToString().Contains(f) || r.Cells["colProductId"].Value.ToString().Contains(f))))
|
|
{
|
|
Invoke(new Action(() =>
|
|
{
|
|
dgvProduct.Rows.Remove(r);
|
|
}));
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
}
|
|
}
|
|
});
|
|
tList.Add(t2);
|
|
t2.Wait();
|
|
|
|
SetSalesCount();
|
|
//SetVisitorCount();
|
|
|
|
productList = productList.Where(p => p.discount_price >= priceMin && p.discount_price <= priceMax && p.sell_num >= salesMin && p.sell_num <= salesMax
|
|
&& (productName?.Count > 0 == false || productName.Any(n => p.name.Contains(n) || p.product_id.ToString().Contains(n)))
|
|
&& (filterWords?.Count > 0 == false || !filterWords.Any(f => p.name.Contains(f) || p.product_id.ToString().Contains(f)))).ToList();
|
|
|
|
Invoke(new Action(() =>
|
|
{
|
|
if (couponForm == null || couponForm.cancellationTokenSource.IsCancellationRequested)
|
|
{
|
|
this.statusBar.lblTaskStatus.Text = "获取中断";
|
|
}
|
|
else
|
|
{
|
|
this.statusBar.lblTaskStatus.Text = "获取完成";
|
|
}
|
|
this.statusBar.pgbTaskProgress.Value = 0;
|
|
this.statusBar.pgbTaskProgress.Text = 0 + "/" + 0;
|
|
this.statusBar.pgbTaskProgress.Maximum = 0;
|
|
}));
|
|
var errMsg = "";
|
|
if (shop.LoginStatus != "登录成功")
|
|
errMsg += " 店铺掉线,请重新登录!";
|
|
if (shop.ApiAuthStatus != "授权成功")
|
|
errMsg += " 授权过期,请重新授权!";
|
|
ShowVisitorMessage(errMsg);
|
|
}
|
|
|
|
public void ShowVisitorMessage(string msg)
|
|
{
|
|
Invoke(new Action(() => { this.label1.Text = msg; }));
|
|
}
|
|
|
|
public void SetSalesCount()
|
|
{
|
|
foreach (var key in dicProductSales.Keys)
|
|
{
|
|
var row = this.dgvProduct.Rows.Cast<DataGridViewRow>().FirstOrDefault(r => r.Cells["colProductId"].Value.ToString() == key);
|
|
if (row != null)
|
|
{
|
|
Invoke(new Action(() =>
|
|
{
|
|
row.Cells["colSales"].Value = dicProductSales[key];
|
|
}));
|
|
}
|
|
var product = this.productList.Find(p => p.product_id.ToString() == key);
|
|
if (product != null)
|
|
product.sell_num = dicProductSales[key];
|
|
}
|
|
|
|
foreach (DataGridViewRow row in dgvProduct.Rows)
|
|
{
|
|
if (row.Cells["colSales"].Value.ToString() == "获取中")
|
|
{
|
|
Invoke(new Action(() =>
|
|
{
|
|
if (isGetProductSalesSuccess)
|
|
{
|
|
row.Cells["colSales"].Value = 0;
|
|
}
|
|
else
|
|
{
|
|
row.Cells["colSales"].Value = "获取失败";
|
|
}
|
|
}));
|
|
}
|
|
}
|
|
if (isGetProductSalesSuccess)
|
|
{
|
|
foreach (var prod in this.productList)
|
|
{
|
|
if (prod.sell_num == null)
|
|
prod.sell_num = 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
private void dgvProduct_CellContentClick(object sender, DataGridViewCellEventArgs e)
|
|
{
|
|
if (e.ColumnIndex < 0 || e.RowIndex < 0)
|
|
return;
|
|
string headerText = dgvProduct.Columns[e.ColumnIndex].HeaderText;
|
|
string columnName = dgvProduct.Columns[e.ColumnIndex].Name;
|
|
var row = dgvProduct.Rows[e.RowIndex];
|
|
switch (columnName)
|
|
{
|
|
case "colSelect":
|
|
//row.Cells["colSelect"].Value = !row.Cells["colSelect"].Value.ParseToBool();
|
|
//chkSelectAll.CheckedChanged -= chkSelectAll_CheckedChanged;
|
|
//if (dgvProduct.Rows.Cast<DataGridViewRow>().All(r => r.Cells["colSelect"].Value.ParseToBool()))
|
|
// chkSelectAll.Checked = true;
|
|
//else
|
|
// chkSelectAll.Checked = false;
|
|
//chkSelectAll.CheckedChanged += chkSelectAll_CheckedChanged;
|
|
break;
|
|
}
|
|
}
|
|
|
|
bool isSelecting = false;
|
|
bool isCheck = true;
|
|
private void dgvProduct_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)
|
|
{
|
|
if (e.ColumnIndex < 0 || e.RowIndex < 0)
|
|
return;
|
|
|
|
var columnName = dgvProduct.Columns[e.ColumnIndex].Name;
|
|
if (MouseButtons == MouseButtons.Left)
|
|
{
|
|
if (columnName == "colSelect")
|
|
{
|
|
dgvProduct.Rows[e.RowIndex].Cells["colSelect"].Value = !dgvProduct.Rows[e.RowIndex].Cells["colSelect"].Value.ParseToBool();
|
|
|
|
isSelecting = true;
|
|
isCheck = dgvProduct.Rows[e.RowIndex].Cells["colSelect"].Value.ParseToBool();
|
|
|
|
chkSelectAll.CheckedChanged -= chkSelectAll_CheckedChanged;
|
|
if (dgvProduct.Rows.Cast<DataGridViewRow>().All(r => r.Cells["colSelect"].Value.ParseToBool()))
|
|
chkSelectAll.Checked = true;
|
|
else
|
|
chkSelectAll.Checked = false;
|
|
chkSelectAll.CheckedChanged += chkSelectAll_CheckedChanged;
|
|
}
|
|
}
|
|
}
|
|
|
|
private void dgvProduct_CellMouseUp(object sender, DataGridViewCellMouseEventArgs e)
|
|
{
|
|
isSelecting = false;
|
|
}
|
|
|
|
private void dgvProduct_CellMouseEnter(object sender, DataGridViewCellEventArgs e)
|
|
{
|
|
if (e.ColumnIndex < 0 || e.RowIndex < 0)
|
|
return;
|
|
|
|
var row = dgvProduct.Rows[e.RowIndex];
|
|
if (MouseButtons == MouseButtons.Left)
|
|
{
|
|
var columnName = dgvProduct.Columns[e.ColumnIndex].Name;
|
|
if (isSelecting)
|
|
{
|
|
dgvProduct.Rows[e.RowIndex].Cells["colSelect"].Value = isCheck;
|
|
|
|
chkSelectAll.CheckedChanged -= chkSelectAll_CheckedChanged;
|
|
if (dgvProduct.Rows.Cast<DataGridViewRow>().All(r => r.Cells["colSelect"].Value.ParseToBool()))
|
|
chkSelectAll.Checked = true;
|
|
else
|
|
chkSelectAll.Checked = false;
|
|
chkSelectAll.CheckedChanged += chkSelectAll_CheckedChanged;
|
|
}
|
|
}
|
|
}
|
|
|
|
public string SetCoupon(int periodType,
|
|
int favouredType,
|
|
long startApplyStamps,
|
|
long endApplyStamps,
|
|
long startUseStamps,
|
|
long endUseStamps,
|
|
int validDays,
|
|
int totalCount,
|
|
int countLimit,
|
|
decimal discount, // (折扣券的)折扣
|
|
int threshold, // 满x元
|
|
int credit, // 减x元
|
|
bool ignore,
|
|
bool oneProductEachCoupon,
|
|
string couponName = "")
|
|
{
|
|
List<DataGridViewRow> rows = this.dgvProduct.Rows.Cast<DataGridViewRow>().Where(r => r.Cells["colSelect"].Value?.ParseToBool() == true).ToList();
|
|
var goodsIdList = rows.Select(r => r.Cells["colProductId"].Value?.ToString()).ToList();
|
|
var goodsIds = "\"" + string.Join("\",\"", goodsIdList) + "\"";
|
|
if (!oneProductEachCoupon)
|
|
{
|
|
var goodsIdListTemp = new List<string>();
|
|
goodsIdListTemp.AddRange(goodsIdList);
|
|
goodsIdList.Clear();
|
|
int numCount = 0;
|
|
goodsIds = "";
|
|
foreach (var goodsId in goodsIdListTemp)
|
|
{
|
|
numCount++;
|
|
goodsIds += "\"" + goodsId + "\",";
|
|
if (numCount % 200 == 0 || numCount >= goodsIdListTemp.Count)
|
|
{
|
|
goodsIdList.Add(goodsIds.Trim(','));
|
|
goodsIds = "";
|
|
}
|
|
}
|
|
}
|
|
if (string.IsNullOrEmpty(couponName))
|
|
couponName = DateTime.Now.ToString("yyMMddHHmm");
|
|
string setResult = "";
|
|
|
|
foreach (var id in goodsIdList)
|
|
{
|
|
// 指定商品折扣券
|
|
//string body = @"{""support_type"":4,""shop_omp_activity_id"":"""",""channel"":3,""coupon_name"":""优惠123"",""period_type"":2,""ignore"":false,""favoured_type"":41,""total_amount"":13,""max_apply_times"":1,""valid_period"":""3"",""discount"":95,""goods"":[""3552987839555832450"",""3552273829277663255"",""3552271209347574338""],""start_apply_time"":1654531200,""end_apply_time"":1654617599,""jump_type"":4}";
|
|
//string body = @"{""support_type"":4,""shop_omp_activity_id"":""7086106181462163749"",""shop_omp_activity_type"":8,""channel"":3,""coupon_name"":""111"",""period_type"":1,""ignore"":false,""favoured_type"":41,""total_amount"":1,""max_apply_times"":1,""goods"":[""3554315317469660534"",""3553784680702692298""],""discount"":90,""start_time"":1655395200,""expire_time"":1655481599,""start_apply_time"":1655395200,""end_apply_time"":1655481599,""jump_type"":4}";
|
|
// 指定商品直减券
|
|
//string body = @"{""support_type"":4,""shop_omp_activity_id"":""7086106181462163749"",""shop_omp_activity_type"":8,""channel"":3,""coupon_name"":""2131"",""period_type"":1,""ignore"":false,""favoured_type"":42,""total_amount"":1,""max_apply_times"":1,""goods"":[""3557115286081690584""],""credit"":200,""start_time"":1657123200,""expire_time"":1657209599,""start_apply_time"":1657123200,""end_apply_time"":1657209599,""jump_type"":2,""jump_product_id"":""3557115286081690584""}";
|
|
//string body = @"{""support_type"":4,""shop_omp_activity_id"":""7086106181462163749"",""shop_omp_activity_type"":8,""channel"":3,""coupon_name"":""1223"",""period_type"":1,""ignore"":false,""favoured_type"":42,""total_amount"":1,""max_apply_times"":1,""goods"":[""3554511661782200678""],""credit"":200,""start_time"":1657123200,""expire_time"":1657209599,""start_apply_time"":1657123200,""end_apply_time"":1657209599,""jump_type"":2,""jump_product_id"":""3554511661782200678""}";
|
|
//string body = @"{""support_type"":4,""shop_omp_activity_id"":""7086106181462163749"",""shop_omp_activity_type"":8,""channel"":3,""coupon_name"":""2311"",""period_type"":1,""ignore"":false,""favoured_type"":42,""total_amount"":1,""max_apply_times"":1,""goods"":[""3554333221040862310"",""3554511661782200678""],""credit"":200,""start_time"":1657123200,""expire_time"":1657209599,""start_apply_time"":1657123200,""end_apply_time"":1657209599,""jump_type"":4}";
|
|
// 指定商品满减券
|
|
//string body = @"{""support_type"":4,""shop_omp_activity_id"":""7086106181462163749"",""shop_omp_activity_type"":8,""channel"":3,""coupon_name"":""1ad"",""period_type"":1,""ignore"":false,""favoured_type"":43,""total_amount"":1,""max_apply_times"":1,""goods"":[""3556136493124815095"",""3558423829472753852""],""threshold"":9900,""credit"":1100,""start_time"":1657123200,""expire_time"":1657209599,""start_apply_time"":1657123200,""end_apply_time"":1657209599,""jump_type"":4}";
|
|
|
|
string body = "{\"support_type\":4," +
|
|
"\"shop_omp_activity_id\":\"\"," +
|
|
"\"channel\":3," +
|
|
"\"coupon_name\":\"" + couponName + "\"," + // 优惠券名称
|
|
"\"period_type\":" + periodType + "," + // 使用时间 1=限制日期范围 2=限制有效天数
|
|
"\"ignore\":" + ignore.ToString().ToLower() + "," + // 价格风险预警 true=不计入 false=计入
|
|
"\"favoured_type\":" + favouredType + "," + // 优惠内容 41=指定商品折扣券 42=指定商品直减券 43=指定商品满减券
|
|
"\"total_amount\":" + totalCount + "," + // 发放量
|
|
"\"max_apply_times\":" + countLimit + ","; // 每人限领
|
|
if (periodType == 2)
|
|
body += "\"valid_period\":\"" + validDays + "\","; // 有效期天数
|
|
if (periodType == 1)
|
|
{
|
|
body += "\"start_time\":" + startUseStamps + ","; // 开始日期
|
|
body += "\"expire_time\":" + endUseStamps + ","; // 结束日期
|
|
}
|
|
if (favouredType == 41)
|
|
{
|
|
body += "\"discount\":" + (int)(10 * discount) + ","; // 折扣
|
|
}
|
|
else if (favouredType == 42)
|
|
{
|
|
body += "\"credit\":" + 100 * credit + ","; // 减x元 单位分
|
|
}
|
|
else if (favouredType == 43)
|
|
{
|
|
body += "\"threshold\":" + 100 * threshold + ","; // 满x元 单位分
|
|
body += "\"credit\":" + 100 * credit + ","; // 减x元 单位分
|
|
}
|
|
body += "\"goods\":[" + id + "]," + // 商品编号
|
|
"\"start_apply_time\":" + startApplyStamps + "," + // 领取开始时间
|
|
"\"end_apply_time\":" + endApplyStamps + "," + // 领取结束时间
|
|
"\"jump_type\":4}";
|
|
|
|
string url = "https://fxg.jinritemai.com/marketing/coupons/v1/check?_bid=ecom_market_shop&appid=1&_=" + BaseClass.DateTimeToTimestampSeconds(DateTime.Now);
|
|
string referer = "https://fxg.jinritemai.com/market/center/coupon/detail?type=4";
|
|
|
|
CommonSimRequest simRequest = new CommonSimRequest();
|
|
simRequest.Accept = "application/json, text/plain, */*";
|
|
simRequest.ContentType = "application/json";
|
|
|
|
var result = simRequest.Request_Post(url, referer, new Dictionary<string, string>(), shop.Cookies, body);
|
|
if (!result.Contains("成功") && !result.Contains("Gateway Timeout"))
|
|
{
|
|
foreach (DataGridViewRow row in rows)
|
|
{
|
|
if (id.Contains(row.Cells["colProductId"].Value.ToString()))
|
|
Invoke(new Action(() => { row.Cells["colMessage"].Value = "优惠券 " + couponName + " 规则校验失败,无法设置。"; }));
|
|
}
|
|
setResult += id + "|error^";
|
|
continue;
|
|
}
|
|
|
|
if ("18565722666|13928836672,18565722666,13928836672,18937517772,18135637272,18888888888".Contains(BaseClass.UserName))
|
|
Thread.Sleep(Randomx.GetId(10, 20));
|
|
else
|
|
Thread.Sleep(Randomx.GetId(100, 500));
|
|
url = "https://fxg.jinritemai.com/marketing/coupons/v1/shopcoupons?_bid=ecom_market_shop&appid=1&_=" + BaseClass.DateTimeToTimestampSeconds(DateTime.Now);
|
|
result = simRequest.Request_Post(url, referer, new Dictionary<string, string>(), shop.Cookies, body);
|
|
if (!result.Contains("成功"))
|
|
{
|
|
var msg = BaseRegex.GetStringJson(ref result, "msg");
|
|
foreach (DataGridViewRow row in rows)
|
|
{
|
|
if (id.Contains(row.Cells["colProductId"].Value.ToString()))
|
|
Invoke(new Action(() => { row.Cells["colMessage"].Value = "优惠券 " + couponName + " 设置失败。" + msg; }));
|
|
}
|
|
setResult += id + "|error^";
|
|
continue;
|
|
}
|
|
foreach (DataGridViewRow row in rows)
|
|
{
|
|
if (id.Contains(row.Cells["colProductId"].Value.ToString()))
|
|
Invoke(new Action(() => { row.Cells["colMessage"].Value = "优惠券 " + couponName + " 设置成功。"; }));
|
|
}
|
|
setResult += id + "|success^";
|
|
|
|
if (goodsIdList.Count > 1)
|
|
{
|
|
if ("18565722666|13928836672,18565722666,13928836672,18937517772,18135637272,18888888888".Contains(BaseClass.UserName))
|
|
Thread.Sleep(Randomx.GetId(50, 150));
|
|
else
|
|
Thread.Sleep(Randomx.GetId(200, 700));
|
|
}
|
|
}
|
|
return setResult;
|
|
}
|
|
|
|
private void 编辑ToolStripMenuItem_Click(object sender, EventArgs e)
|
|
{
|
|
List<DataGridViewRow> rows = this.dgvProduct.Rows.Cast<DataGridViewRow>().Where(r => r.Cells["colSelect"].Value?.ParseToBool() == true).ToList();
|
|
var goodsIdList = rows.Select(r => r.Cells["colProductId"].Value?.ToString()).ToList();
|
|
var goodsIds = "\"" + string.Join("\",\"", goodsIdList) + "\"";
|
|
|
|
CouponMulitAddForm form = new CouponMulitAddForm();
|
|
form.couponShopForm = this;
|
|
form.Show();
|
|
}
|
|
|
|
public void ClearData()
|
|
{
|
|
this.dgvProduct.Rows.Clear();
|
|
this.productList.Clear();
|
|
}
|
|
}
|
|
}
|