Files
2025-06-29 19:38:31 +08:00

497 lines
21 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using AllBase;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using Work.Api;
namespace Work.ManageClass
{
public class AutoQuestion
{
public string Name;
public ShopChatBase Shop;
public static int ShopThreadCount = 50;
public int rowindex = 0;
public int colindex = 0;
public static List<ShopQuestion> ShopQuestionList = new List<ShopQuestion>();
public static List<QuestionKeyValue> pairList = new List<QuestionKeyValue>();
public AutoQuestion(string name)
{
Name = name;
}
public void SetQuestion()
{
List<Thread> ts = new List<Thread>();
for (int i = 0; i < GetShopLoginInfo.Shops.Count; i++)
{
var shop = GetShopLoginInfo.Shops[i];
if (!shop.SelectQue)
continue;
var p = new AutoQuestionControl(Name, shop);
p.rowindex = rowindex;
p.colindex = colindex;
Threadx.ThreadListWait(ref ts, new Thread(p.SetQuestion), ShopThreadCount);
Thread.Sleep(3000);
}
Threadx.ThreadListWait(ref ts);
}
public void QueryQuestion()
{
List<Thread> ts = new List<Thread>();
for (int i = 0; i < GetShopLoginInfo.Shops.Count; i++)
{
var shop = GetShopLoginInfo.Shops[i];
if (!shop.SelectQue)
continue;
var p = new AutoQuestionControl(Name, shop);
Threadx.ThreadListWait(ref ts, new Thread(p.QueryQuestion), ShopThreadCount);
Thread.Sleep(3000);
}
Threadx.ThreadListWait(ref ts);
}
public void SetAllQuestion()
{
List<Thread> ts = new List<Thread>();
for (int i = 0; i < GetShopLoginInfo.Shops.Count; i++)
{
var shop = GetShopLoginInfo.Shops[i];
if (!shop.SelectQue)
continue;
var p = new AutoQuestionControl(Name, shop);
p.rowindex = rowindex;
p.colindex = colindex;
Threadx.ThreadListWait(ref ts, new Thread(p.SetAllQuestion), ShopThreadCount);
Thread.Sleep(3000);
}
Threadx.ThreadListWait(ref ts);
}
public void SetAllEquity()
{
List<Thread> ts = new List<Thread>();
for (int i = 0; i < GetShopLoginInfo.Shops.Count; i++)
{
var shop = GetShopLoginInfo.Shops[i];
if (!shop.SelectQue)
continue;
var p = new AutoQuestionControl(Name, shop);
p.rowindex = rowindex;
p.colindex = colindex;
Threadx.ThreadListWait(ref ts, new Thread(p.SetAllEquity), ShopThreadCount);
Thread.Sleep(3000);
}
Threadx.ThreadListWait(ref ts);
}
public void SetSingleEquity()
{
List<Thread> ts = new List<Thread>();
for (int i = 0; i < GetShopLoginInfo.Shops.Count; i++)
{
var shop = GetShopLoginInfo.Shops[i];
if (!shop.SelectQue)
continue;
var p = new AutoQuestionControl(Name, shop);
p.rowindex = rowindex;
Threadx.ThreadListWait(ref ts, new Thread(p.SetSingleEquity), ShopThreadCount);
Thread.Sleep(3000);
}
Threadx.ThreadListWait(ref ts);
}
}
public class AutoQuestionControl
{
public string Name;
public ShopChatBase Shop;
public int rowindex = 0;
public int colindex = 0;
public List<QuestionKeyValue> satusList = new List<QuestionKeyValue>();
public AutoQuestionControl(string name, ShopChatBase shop)
{
Name = name;
Shop = shop;
}
public void QueryQuestion()
{
QueryQuestion(0);
}
public void QueryQuestion(int type=0)
{
AutoQuestion.pairList.Clear();
satusList.Clear();
string url = "https://mms.pinduoduo.com/rivendell/api/qualification/getQualificationList";
string refere = "https://mms.pinduoduo.com/mallcenter/ability/index";
string data = "{}";
string html = GetPostTaobaoHtml.UploadTaobaoPost(url, refere, true, data, Shop.Cookies);
var m = BaseRegex.GetMatchRegex(ref html, @"{""questionnaireId"":[^}]+?}");
for (int j = 0; m != null && j < m.Count; j++)
{
string item = m[j].Groups[0].Value;
int questionnaireId = BaseRegex.GetIntJson(ref item, "questionnaireId");
int finished = BaseRegex.GetIntJson(ref item, "finished");
QuestionKeyValue qk = new QuestionKeyValue();
qk.key = questionnaireId;
qk.value = finished;
satusList.Add(qk);
}
ShopQuestion sq = new ShopQuestion();
sq.Shop = Shop;
sq.satusList = satusList;
AutoQuestion.ShopQuestionList.Add(sq);
m = BaseRegex.GetMatchRegex(ref html, @"""qualificationBenefit"":\s*\[\{[^}]+?\}");
for (int j = 0; m != null && j < m.Count; j++)
{
string item = m[j].Groups[0].Value;
int finished = BaseRegex.GetIntJson(ref item, "benefitStatus");
QuestionKeyValue qk = new QuestionKeyValue();
qk.key = j + 1;
qk.value = finished;
AutoQuestion.pairList.Add(qk);
}
if (type == 0)
LogSave.Add(Name, Shop.ShopName + "查询店铺答题状况完成。");
else
{
var p = AutoQuestion.pairList.Find(s => s.value == 0);
if (p != null)
{
ShopQuestion sqx = new ShopQuestion();
sqx.Shop = Shop;
sqx.status = "领取权益部分失败";
AutoQuestion.ShopQuestionList.Add(sqx);
LogSave.Add(Name, Shop.ShopName + "领取权益部分失败。");
}
else
{
ShopQuestion sqx = new ShopQuestion();
sqx.Shop = Shop;
sqx.status = "领取权益完成";
AutoQuestion.ShopQuestionList.Add(sqx);
LogSave.Add(Name, Shop.ShopName + "领取权益完成。");
}
}
}
public void SetQuestion()
{
if (rowindex == 0 || colindex == 0)
return;
string cookies = Shop.Cookies;
string url = "https://mms.pinduoduo.com/rivendell/api/qualification/getQualificationList";
string refere = "https://mms.pinduoduo.com/mallcenter/ability/index";
string data = "{}";
string html = GetPostTaobaoHtml.UploadTaobaoPost(url, refere, true, data, cookies);
var m = BaseRegex.GetMatchRegex(ref html, @"{""questionnaireId"":[^}]+?}");
for (int j = 0; m != null && j < m.Count; j++)
{
string item = m[j].Groups[0].Value;
int questionnaireId = BaseRegex.GetIntJson(ref item, "questionnaireId");
int finished = BaseRegex.GetIntJson(ref item, "finished");
if (questionnaireId == colindex && finished == 1)
{
string result = RetResult(colindex, "已通过,考试无需再考");
ShopQuestion sq = new ShopQuestion();
sq.Shop = Shop;
sq.status = "已通过,考试无需再考";
AutoQuestion.ShopQuestionList.Add(sq);
LogSave.Add(Name, result);
return;
}
else
{
break;
}
}
Thread.Sleep(1000);
url = "https://mms.pinduoduo.com/rivendell/api/questionnaire/getQuestionnaireDetail";
refere = "https://mms.pinduoduo.com/mallcenter/ability/exam/"+ colindex;
data = "{\"questionnaireId\":"+colindex+"}";
html = GetPostTaobaoHtml.UploadTaobaoPost(url, refere, true, data, cookies);
Thread.Sleep(1000);
url = "https://mms.pinduoduo.com/rivendell/api/qualification/detail";
refere = "https://mms.pinduoduo.com/mallcenter/ability/exam/"+ colindex;
data = "{\"qualificationId\":"+rowindex+"}";
html = GetPostTaobaoHtml.UploadTaobaoPost(url, refere, true, data, cookies);
Thread.Sleep(200);
url = "https://mms.pinduoduo.com/rivendell/api/questionnaire/updateReadRecord";
refere = "https://mms.pinduoduo.com/mallcenter/ability/exam/"+ colindex;
data = "{\"questionnaireId\":"+ colindex + "}";
html = GetPostTaobaoHtml.UploadTaobaoPost(url, refere, true, data, cookies);
if (html.Contains("\"success\":true"))
{
ShopQuestion sq = new ShopQuestion();
sq.Shop = Shop;
sq.status = "已通过";
AutoQuestion.ShopQuestionList.Add(sq);
LogSave.Add(Name, RetResult(colindex));
}
}
public void SetAllQuestion()
{
satusList.Clear();
string urlx = "https://mms.pinduoduo.com/rivendell/api/qualification/getQualificationList";
string referex = "https://mms.pinduoduo.com/mallcenter/ability/index";
string datax = "{}";
string htmlx = GetPostTaobaoHtml.UploadTaobaoPost(urlx, referex, true, datax, Shop.Cookies);
var m = BaseRegex.GetMatchRegex(ref htmlx, @"{""questionnaireId"":[^}]+?}");
for (int j = 0; m != null && j < m.Count; j++)
{
string item = m[j].Groups[0].Value;
int questionnaireId = BaseRegex.GetIntJson(ref item, "questionnaireId");
int finished = BaseRegex.GetIntJson(ref item, "finished");
QuestionKeyValue qk = new QuestionKeyValue();
qk.key = questionnaireId;
qk.value = finished;
satusList.Add(qk);
}
string cookies = Shop.Cookies;
for (int i =1; i < 5; i++)
{
for (int j = 1; j < 5; j++)
{
rowindex = i;
colindex = j + 4 * (i - 1);
var staval = satusList.Find(sa => sa.key == colindex);
if (staval.value==1)
{
string result = RetResult(colindex, "已通过,考试无需再考");
ShopQuestion sq = new ShopQuestion();
sq.Shop = Shop;
sq.status = result;
AutoQuestion.ShopQuestionList.Add(sq);
LogSave.Add(Name, RetResult(colindex));
continue;
}
string url = "https://mms.pinduoduo.com/rivendell/api/questionnaire/getQuestionnaireDetail";
string refere = "https://mms.pinduoduo.com/mallcenter/ability/exam/" + colindex;
string data = "{\"questionnaireId\":" + colindex + "}";
string html = GetPostTaobaoHtml.UploadTaobaoPost(url, refere, true, data, cookies);
Thread.Sleep(200);
url = "https://mms.pinduoduo.com/rivendell/api/qualification/detail";
refere = "https://mms.pinduoduo.com/mallcenter/ability/exam/" + colindex;
data = "{\"qualificationId\":" + rowindex + "}";
html = GetPostTaobaoHtml.UploadTaobaoPost(url, refere, true, data, cookies);
Thread.Sleep(200);
url = "https://mms.pinduoduo.com/rivendell/api/questionnaire/updateReadRecord";
refere = "https://mms.pinduoduo.com/mallcenter/ability/exam/" + colindex;
data = "{\"questionnaireId\":" + colindex + "}";
html = GetPostTaobaoHtml.UploadTaobaoPost(url, refere, true, data, cookies);
if (html.Contains("\"success\":true"))
{
string result = RetResult(colindex);
//ShopQuestion sq = new ShopQuestion();
//sq.Shop = Shop;
//sq.status = result;
//AutoQuestion.ShopQuestionList.Add(sq);
LogSave.Add(Name, result);
}
int randx = new Random(Guid.NewGuid().GetHashCode()).Next(1, 5);
Thread.Sleep(randx);
}
}
QueryStatusQuestion();
}
public void QueryStatusQuestion()
{
satusList.Clear();
string url = "https://mms.pinduoduo.com/rivendell/api/qualification/getQualificationList";
string refere = "https://mms.pinduoduo.com/mallcenter/ability/index";
string data = "{}";
string html = GetPostTaobaoHtml.UploadTaobaoPost(url, refere, true, data, Shop.Cookies);
var m = BaseRegex.GetMatchRegex(ref html, @"{""questionnaireId"":[^}]+?}");
for (int j = 0; m != null && j < m.Count; j++)
{
string item = m[j].Groups[0].Value;
int questionnaireId = BaseRegex.GetIntJson(ref item, "questionnaireId");
int finished = BaseRegex.GetIntJson(ref item, "finished");
QuestionKeyValue qk = new QuestionKeyValue();
qk.key = questionnaireId;
qk.value = finished;
satusList.Add(qk);
}
var p = satusList.Find(s=>s.value==0);
if (p != null)
{
ShopQuestion sq = new ShopQuestion();
sq.Shop = Shop;
sq.status = "答题部分失败";
AutoQuestion.ShopQuestionList.Add(sq);
}
else
{
ShopQuestion sq = new ShopQuestion();
sq.Shop = Shop;
sq.status = "答题全部成功";
AutoQuestion.ShopQuestionList.Add(sq);
}
}
public void SetAllEquity()
{
satusList.Clear();
string urlx = "https://mms.pinduoduo.com/rivendell/api/qualification/getQualificationList";
string referex = "https://mms.pinduoduo.com/mallcenter/ability/index";
string datax = "{}";
string htmlx = GetPostTaobaoHtml.UploadTaobaoPost(urlx, referex, true, datax, Shop.Cookies);
var m = BaseRegex.GetMatchRegex(ref htmlx, @"{""questionnaireId"":[^}]+?}");
for (int j = 0; m != null && j < m.Count; j++)
{
string item = m[j].Groups[0].Value;
int questionnaireId = BaseRegex.GetIntJson(ref item, "questionnaireId");
int finished = BaseRegex.GetIntJson(ref item, "finished");
QuestionKeyValue qk = new QuestionKeyValue();
qk.key = questionnaireId;
qk.value = finished;
satusList.Add(qk);
}
string cookies = Shop.Cookies;
for (int i = 1; i < 5; i++)
{
rowindex = i;
if (satusList[4 * i - 4].value != 1 || satusList[4 * i - 3].value != 1 || satusList[4 * i - 2].value != 1 || satusList[4 * i-1].value != 1)
continue;
string url = "https://mms.pinduoduo.com/rivendell/api/qualification/receiveBenefits";
string refere = "https://mms.pinduoduo.com/mallcenter/ability/index";
string data = "{\"qualificationId\":" + rowindex + "}";
string html = GetPostTaobaoHtml.UploadTaobaoPost(url, refere, true, data, cookies);
LogSave.Add(Name, RetResultEqu(i));
int randx = new Random(Guid.NewGuid().GetHashCode()).Next(1, 5);
Thread.Sleep(randx);
}
QueryQuestion(1);
}
public void SetSingleEquity()
{
satusList.Clear();
string urlx = "https://mms.pinduoduo.com/rivendell/api/qualification/getQualificationList";
string referex = "https://mms.pinduoduo.com/mallcenter/ability/index";
string datax = "{}";
string htmlx = GetPostTaobaoHtml.UploadTaobaoPost(urlx, referex, true, datax, Shop.Cookies);
var m = BaseRegex.GetMatchRegex(ref htmlx, @"{""questionnaireId"":[^}]+?}");
for (int j = 0; m != null && j < m.Count; j++)
{
string item = m[j].Groups[0].Value;
int questionnaireId = BaseRegex.GetIntJson(ref item, "questionnaireId");
int finished = BaseRegex.GetIntJson(ref item, "finished");
QuestionKeyValue qk = new QuestionKeyValue();
qk.key = questionnaireId;
qk.value = finished;
satusList.Add(qk);
}
string cookies = Shop.Cookies;
if (satusList[4 * rowindex - 4].value != 1 || satusList[4 * rowindex - 3].value != 1 || satusList[4 * rowindex - 2].value != 1 || satusList[4 * rowindex - 1].value != 1)
return;
string url = "https://mms.pinduoduo.com/rivendell/api/qualification/receiveBenefits";
string refere = "https://mms.pinduoduo.com/mallcenter/ability/index";
string data = "{\"qualificationId\":" + rowindex + "}";
string html = GetPostTaobaoHtml.UploadTaobaoPost(url, refere, true, data, cookies);
LogSave.Add(Name, RetResultEqu(rowindex));
QueryQuestion(1);
int randx = new Random(Guid.NewGuid().GetHashCode()).Next(1, 5);
Thread.Sleep(randx);
}
public string RetResultEqu(int col, string str = "已领取权益")
{
string result = "";
switch (col)
{
case 1:
result = "基础经营能力认证,";
break;
case 2:
result = "高级经营能力认证,";
break;
case 3:
result = "推广能力认证,";
break;
case 4:
result = "活动能力认证,";
break;
}
return Shop.ShopName + ":" + result + str;
}
public string RetResult(int col,string str= "已通过")
{
string result = "";
switch(col)
{
case 1:
result = "基础经营能力认证,试题Ⅰ:新商家入驻";
break;
case 2:
result = "基础经营能力认证,试题Ⅱ:平台规则";
break;
case 3:
result = "基础经营能力认证,试题Ⅲ:商品设置、店铺运营";
break;
case 4:
result = "基础经营能力认证,试题Ⅳ:客户服务";
break;
case 5:
result = "高级经营能力认证,试题Ⅰ:店铺管理";
break;
case 6:
result = "高级经营能力认证,试题Ⅱ:商品管理";
break;
case 7:
result = "高级经营能力认证,试题Ⅲ:订单管理";
break;
case 8:
result = "高级经营能力认证,试题Ⅳ:售后管理";
break;
case 9:
result = "推广能力认证,试题Ⅰ:营销推广入门";
break;
case 10:
result = "推广能力认证,试题Ⅱ:营销推广基础";
break;
case 11:
result = "推广能力认证,试题Ⅲ:营销推广进阶";
break;
case 12:
result = "推广能力认证,试题Ⅳ:多多进宝";
break;
case 13:
result = "活动能力认证,试题Ⅰ:秒杀活动";
break;
case 14:
result = "活动能力认证,试题Ⅱ:领券中心";
break;
case 15:
result = "活动能力认证,试题Ⅲ:竞价";
break;
case 16:
result = "活动能力认证,试题Ⅳ:报名活动注意事项";
break;
}
return Shop.ShopName+":"+result+ str;
}
}
public class ShopQuestion
{
public ShopChatBase Shop;
public string status;
public List<QuestionKeyValue> satusList = new List<QuestionKeyValue>();
}
public class QuestionKeyValue
{
public int key;
public int value;
}
}