Example #1
0
        /// <summary>
        /// 获取用户信息
        /// </summary>
        /// <param name="dr">任务信息</param>
        /// <returns></returns>
        private SellerInfoEntity GetSellerinfo(DataRow dr)
        {                                                             //获取用户信息
            string           seller_id  = dr["seller_id"].ToString(); //用户id
            MySqlHelper      db         = new MySqlHelper();
            SellerInfoEntity sellerinfo = new SellerInfoEntity();
            DataTable        sellerDt   = new DataTable();

            if (dr["useplatform"].ToString() == "2")
            {
                sellerDt = dbsp.ExecuteDataTable("select id,userid,nick,shopname,lastvisit,sessionkey,shoptype from crm_sellerinfo where userid='" + seller_id + "';");
            }
            else
            {
                sellerDt = db.ExecuteDataTable("select id,userid,nick,shopname,lastvisit,sessionkey,shoptype from crm_sellerinfo where userid='" + seller_id + "';");
            }
            //sellerDt = db.ExecuteDataTable("select id,userid,nick,shopname,lastvisit,sessionkey,shoptype from crm_sellerinfo where userid='" + seller_id + "';");
            //绑定卖家信息
            if (sellerDt != null && sellerDt.Rows.Count > 0)
            {
                sellerinfo.strUserId   = sellerDt.Rows[0]["userid"].ToString();
                sellerinfo.strUserNick = sellerDt.Rows[0]["nick"].ToString();
                sellerinfo.sellerType  = sellerDt.Rows[0]["shopType"].ToString();
                sellerinfo.top_session = sellerDt.Rows[0]["sessionkey"].ToString();
                //sellerinfo.top_session = "61012099c061511621c594ZZ0865780c3e824303bc0ed0e2929003048";
            }
            return(sellerinfo);
        }
Example #2
0
        public static Dictionary <string, Item> Search(SearEntity sear, SellerInfoEntity sellerinfo)
        {
            try
            {
                bool                      isnum_iid   = true;
                string                    reqName     = "";
                StringBuilder             strbNumIid  = new StringBuilder();
                Dictionary <string, Item> itemDic     = new Dictionary <string, Item>();
                string                    type        = sear.type;
                string                    num_iid     = sear.numIid;
                string                    status      = sear.statuss;    //查询是否出售中
                string                    sellerCat   = sear.sellerCats; //查询条件宝贝分类
                string                    strMainWord = sear.title;      //查询条件宝贝关键字
                int    useplatform = sear.useplatform;                   //平台识别码
                string sellerId    = sellerinfo.strUserId;
                GetType(type, ref isnum_iid, ref reqName);
                if (!string.IsNullOrWhiteSpace(num_iid))
                {
                    #region 宝贝id查询
                    return(SearchNumIid(num_iid, sellerinfo, reqName, useplatform));

                    #endregion
                }
                else
                {   //根据条件查询
                    return(SearchAll(status, reqName, isnum_iid, strMainWord, sellerCat, sellerinfo, useplatform));
                }
            }
            catch (Exception ex)
            {
                TxtLog.WriteLine("getItemListErrorLog", sellerinfo.strUserNick + ":" + sellerinfo.strUserId + "=== :出现异常:" + ex.ToString());
                return(null);
            }
        }
Example #3
0
        public static Dictionary <string, Item> SearchNumIid(string num_iid, SellerInfoEntity sellerinfo, string reqName, int useplatform)
        {
            Dictionary <string, Item> itemDic = new Dictionary <string, Item>();

            #region 非全店选择批量
            if (string.IsNullOrWhiteSpace(num_iid))
            {
                return(null);
            }
            string itemid = num_iid;                       //商品id
            Regex  reg    = new Regex(@"(\d+,){0,19}\d+"); //正则获取每次20个
            foreach (Match m in reg.Matches(itemid))
            {
                ItemsSellerListGetRequest itemGetRequest = new ItemsSellerListGetRequest
                {
                    Fields  = reqName,
                    NumIids = m.Value
                };
                ItemsSellerListGetResponse itemGetResponse = TopClient.Execute(itemGetRequest, sellerinfo.top_session, (TopClient.CrmPlatForm)useplatform);
                for (int j = 0; j < 3; j++)
                {
                    itemGetResponse = TopClient.Execute(itemGetRequest, sellerinfo.top_session, (TopClient.CrmPlatForm)useplatform);
                    bool isok = string.IsNullOrWhiteSpace(itemGetResponse.SubErrMsg) ? true : false;
                    if (isok)//没有错就跳出  有错误暂停0.5s 继续执行
                    {
                        break;
                    }
                    else
                    {
                        Thread.Sleep(500);
                    }
                }
                if (itemGetResponse.IsError)
                {
                    TxtLog.WriteLine("getItemListErrorLog", sellerinfo.strUserNick + ":" + sellerinfo.strUserId + "===" + m.Value + ":出现异常:" + itemGetResponse.Body);
                    continue;
                }
                foreach (Item item in itemGetResponse.Items.Where(item => !itemDic.ContainsKey(item.NumIid.ToString())))
                {
                    itemDic.Add(item.NumIid.ToString(), item);
                }
            }
            #endregion
            return(itemDic);
        }
Example #4
0
        /// <summary>
        /// 获取需要执行的宝贝对象信息
        /// </summary>
        /// <param name="sellerinfo">用户信息</param>
        /// <param name="dr">任务信息</param>
        /// <returns></returns>
        private Dictionary <string, Item> GetItem(SellerInfoEntity sellerinfo, DataRow dr)
        {
            //获取提交任务的条件判断哪些宝贝需要执行检测
            string seller_id   = dr["seller_id"].ToString();   //用户id
            string check_type  = dr["check_type"].ToString();  //宝贝条件  0:出售中商品检测 1:仓库中商品检测' 3 全部
            string total_count = dr["total_count"].ToString(); //提交宝贝总数
            string num_iid     = dr["num_iid"].ToString();     //宝贝id 为主要条件
            //获取宝贝
            SearEntity sear = null;

            if (string.IsNullOrWhiteSpace(num_iid))
            {
                sear = new SearEntity(check_type, "", "", "违禁词", useplatform);
            }
            else
            {
                sear = new SearEntity(num_iid, "违禁词", useplatform);
            }
            // 是否出售中 ,类目id,标题,调用者
            return(SearchItems.Search(sear, sellerinfo));
        }
Example #5
0
        public bool SendMain(DataTable dt)
        {
            string activityId = dt.Rows[0]["id"].ToString();

            useplatform = int.Parse(dt.Rows[0]["useplatform"].ToString());
            MySqlHelper dbtool = new MySqlHelper(DataType.ToolsProducts);

            try
            {
                //string sqlActivity = string.Format("select * from crm_attributesprodetect where    id='{0}'", activityId);
                //DataTable dt = dbtool.ExecuteDataTable(sqlActivity);
                Dictionary <string, Item> dicItem = new Dictionary <string, Item>();//存储宝贝信息的集合
                if (dt != null && dt.Rows.Count > 0)
                {
                    ShowSend("检测开始");
                    SellerInfoEntity sellerinfo = GetSellerinfo(dt.Rows[0]);
                    dicItem = GetItem(sellerinfo, dt.Rows[0]);
                    string tabelName = sellerinfo.strUserId.Substring(sellerinfo.strUserId.Length - 1);
                    string cpsql     = string.Format("delete from crm_prohibiteword_detail{0} where mainid1 ='{1}'", tabelName, activityId);
                    dbtool.ExecuteNonQuery(cpsql);
                    TaskDetection(dicItem, sellerinfo, activityId, dt.Rows[0]["activity_type"].ToString());
                    ShowSend("检测完成");
                }
                return(true);
            }
            catch (Exception ex)
            {
                TxtLog.WriteLine("图片违禁词检测", "主程序异常" + ex.ToString());
                return(false);
            }
            finally
            {
                rch.Delete(activityId);
                //结束任务
                string sqlactivity = string.Format("UPDATE crm_attributesprodetect SET tools ='-1',  check_state = 2  WHERE id = '{0}';", activityId);
                dbtool.ExecuteNonQuery(sqlactivity);
            };
        }
Example #6
0
        public void TaskDetection(Dictionary <string, Item> dicItem, SellerInfoEntity sellerinfo, string activityId, string activityType)
        {
            try
            {
                if (dicItem == null)
                {
                    TxtLog.WriteLine("getItemListErrorLog", sellerinfo.strUserNick + ":" + sellerinfo.strUserId + "=== :出现异常:获取宝贝为空" + sellerinfo.top_session);
                    return;
                }
                string      tableindex    = sellerinfo.strUserId.Substring(sellerinfo.strUserId.Length - 1, 1);
                MySqlHelper dbtool        = new MySqlHelper(DataType.ToolsProducts);
                string      sql           = "select proword from crm_prohibitedword where is_del='0'";
                string      sqluser       = "******" + tableindex + " where is_del='0' and seller_id =" + sellerinfo.strUserId;
                DataTable   dt            = dbtool.ExecuteDataTable(sql);
                DataTable   dtuser        = dbtool.ExecuteDataTable(sqluser);
                string      ItemImgsError = string.Empty;
                string      titleword     = string.Empty; //标题异常
                string      desc          = string.Empty; //详情异常
                string      pictext       = string.Empty;
                Mypic       myp           = new Mypic();
                int         itemcount     = 0;
                foreach (var item in dicItem.Values)
                {//'任务类型 0,文字检测 1图片检测 3 全部检测'
                    titleword = ""; desc = ""; ItemImgsError = "";
                    switch (activityType)
                    {
                    case "0":    //文字检测
                        myp.DetectionTitelDesc(dtuser, dt, item, ref titleword, ref desc);
                        break;

                    case "1":    //图片检测
                        myp.DetectionPIC(dtuser, dt, item, ref ItemImgsError, ref pictext);
                        break;

                    case "3":    //  全部检测'
                        myp.DetectionTitelDesc(dtuser, dt, item, ref titleword, ref desc);
                        myp.DetectionPIC(dtuser, dt, item, ref ItemImgsError, ref pictext);
                        break;

                    default:
                        break;
                    }
                    if (pictext != null && pictext.Contains("Open api daily request limit reached"))
                    {
                        LogApi.MonitorLog.Write(LogApi.LogType.Error, LogApi.Products.CRM, LogApi.VersionM.Standard, "图片检测欠费", sellerinfo.strUserId, sellerinfo.strUserNick, "", " 检测api欠费:活动id:" + activityId);
                        return;
                    }
                    else if (pictext != null && pictext.Contains("Open api qps request limit reached"))
                    {
                        LogApi.MonitorLog.Write(LogApi.LogType.Error, LogApi.Products.CRM, LogApi.VersionM.Standard, "图片检测欠费", sellerinfo.strUserId, sellerinfo.strUserNick, "", " 检测api限流 活动id:" + activityId);
                        return;
                    }
                    itemcount++;
                    ShowSend("开始检测" + DateTime.Now.ToString() + "宝贝id" + item.NumIid + itemcount + "/" + dicItem.Count + "用户id" + sellerinfo.strUserId);
                    //任务进度写进缓存
                    Sethc(activityId, itemcount + "/" + dicItem.Count);
                    string errors    = titleword + desc + ItemImgsError;
                    string tabelName = sellerinfo.strUserId.Substring(sellerinfo.strUserId.Length - 1);
                    if (!string.IsNullOrWhiteSpace(errors))
                    {
                        if (!string.IsNullOrWhiteSpace(ItemImgsError))
                        {
                            ItemImgsError = "[" + ItemImgsError.Substring(0, ItemImgsError.Length - 1) + "]";
                        }
                        string psql = string.Format("INSERT INTO  `crm_prohibiteword_detail{0}` (`id`, `mainid1`, `seller_id`, `num_id`, `title` , `pic_url`, `create_time`, `title_fail_reason`, `sellpoint_fail_reason`, `desc_fail_reason`, picture_fail_reason1,is_error) VALUES ('{1}', '{2}', '{3}', '{4}', '{5}' , '{6}', now(), '{7}', '', '{8}','{9}',{10} );", tabelName, Guid.NewGuid(), activityId, sellerinfo.strUserId, item.NumIid, item.Title.Replace("'", ""), item.PicUrl, titleword, desc, ItemImgsError, "1");
                        dbtool.ExecuteNonQuery(psql);
                    }
                    else
                    {
                        string psql = string.Format("INSERT INTO  `crm_prohibiteword_detail{0}` (`id`, `mainid1`, `seller_id`, `num_id`, `title` , `pic_url`, `create_time`, `title_fail_reason`, `sellpoint_fail_reason`, `desc_fail_reason`, picture_fail_reason1,is_error) VALUES ('{1}', '{2}', '{3}', '{4}', '{5}' , '{6}', now(), '{7}', '', '{8}','{9}' ,{10});", tabelName, Guid.NewGuid(), activityId, sellerinfo.strUserId, item.NumIid, item.Title.Replace("'", ""), item.PicUrl, titleword, desc, ItemImgsError, "0");
                        dbtool.ExecuteNonQuery(psql);
                    }
                }
            }
            catch (Exception ex)
            {
                TxtLog.WriteLine("图片违禁词检测", ex.ToString());
            }
        }
Example #7
0
        public static Dictionary <string, Item> SearchAll(string status, string reqName, bool isnum_iid, string strMainWord, string sellerCat, SellerInfoEntity sellerinfo, int useplatform)
        {
            TxtLog.WriteLine("getItemListErrorLog", sellerinfo.strUserNick + ":" + sellerinfo.strUserId + "===" + status + " ::" + sellerinfo.top_session);
            Dictionary <string, Item> itemDic    = new Dictionary <string, Item>();
            StringBuilder             strbNumIid = new StringBuilder();
            long totalResults = 0; //宝贝总数
            int  pageNo       = 0; //api查询页码
            int  pageNo2      = 0; //api查询页码

            status = status == "3" ? null : status;
            if (string.IsNullOrWhiteSpace(status))
            {
                #region 获取出售中的商品
                do
                {
                    pageNo++;
                    ItemsOnsaleGetRequest req = new ItemsOnsaleGetRequest();
                    req.Fields   = reqName;
                    req.PageSize = 200L;
                    req.PageNo   = Convert.ToInt64(pageNo);
                    req.OrderBy  = "list_time:asc";
                    if (strMainWord.Length > 0)
                    {
                        req.Q = strMainWord;
                    }
                    if (sellerCat.Trim().Length > 0)
                    {
                        req.SellerCids = sellerCat;
                    }
                    ItemsOnsaleGetResponse response = TopClient.Execute <ItemsOnsaleGetResponse>(req, sellerinfo.top_session, (TopClient.CrmPlatForm)useplatform);
                    if (response.IsError)
                    {
                        TxtLog.WriteLine("getItemListErrorLog", sellerinfo.strUserNick + ":" + sellerinfo.strUserId + "=== :出现异常:" + response.Body);
                    }
                    else
                    {
                        TxtLog.WriteLine("getItemListErrorLog", sellerinfo.strUserNick + ":" + sellerinfo.strUserId + "=== :出现异常:" + response.Body);
                        totalResults = response.TotalResults;
                        foreach (Item item in response.Items.Where(item => !itemDic.ContainsKey(item.NumIid.ToString())))
                        {
                            if (isnum_iid)
                            {
                                strbNumIid.Append(item.NumIid.ToString() + ",");
                            }
                            else
                            {
                                itemDic.Add(item.NumIid.ToString(), item);
                            }
                        }
                    }
                } while (totalResults > pageNo * 200);
                #endregion
                #region 获取仓库中的商品
                do
                {
                    pageNo2++;
                    ItemsInventoryGetRequest req = new ItemsInventoryGetRequest
                    {
                        Fields   = reqName,
                        PageSize = 200,
                        PageNo   = pageNo2
                    };
                    if (strMainWord.Length > 0)
                    {
                        req.Q = strMainWord;
                    }
                    if (sellerCat.Trim().Length > 0)
                    {
                        req.SellerCids = sellerCat;
                    }
                    ItemsInventoryGetResponse response = TopClient.Execute(req, sellerinfo.top_session, (TopClient.CrmPlatForm)useplatform);
                    if (response.IsError)
                    {
                        TxtLog.WriteLine("getItemListErrorLog", sellerinfo.strUserNick + ":" + sellerinfo.strUserId + "=== :出现异常:" + response.Body);
                    }
                    else
                    {
                        totalResults = response.TotalResults;
                        foreach (Item item in response.Items.Where(item => !itemDic.ContainsKey(item.NumIid.ToString())))
                        {
                            if (isnum_iid)
                            {
                                strbNumIid.Append(item.NumIid.ToString() + ",");
                            }
                            else
                            {
                                itemDic.Add(item.NumIid.ToString(), item);
                            }
                        }
                    }
                } while (totalResults > pageNo2 * 200);
                #endregion
            }
            else
            {
                if (status == "0")
                {
                    #region 获取出售中的商品
                    do
                    {
                        pageNo++;
                        ItemsOnsaleGetRequest req = new ItemsOnsaleGetRequest();
                        req.Fields   = reqName;
                        req.PageSize = 200L;
                        req.PageNo   = Convert.ToInt64(pageNo);
                        req.OrderBy  = "list_time:asc";
                        if (strMainWord.Length > 0)
                        {
                            req.Q = strMainWord;
                        }
                        if (sellerCat.Trim().Length > 0)
                        {
                            req.SellerCids = sellerCat;
                        }
                        ItemsOnsaleGetResponse response = TopClient.Execute <ItemsOnsaleGetResponse>(req, sellerinfo.top_session, (TopClient.CrmPlatForm)useplatform);
                        if (response.IsError)
                        {
                            TxtLog.WriteLine("getItemListErrorLog", sellerinfo.strUserNick + ":" + sellerinfo.strUserId + "=== :出现异常:" + response.Body);
                        }
                        else
                        {
                            totalResults = response.TotalResults;
                            foreach (Item item in response.Items.Where(item => !itemDic.ContainsKey(item.NumIid.ToString())))
                            {
                                if (isnum_iid)
                                {
                                    strbNumIid.Append(item.NumIid.ToString() + ",");
                                }
                                else
                                {
                                    itemDic.Add(item.NumIid.ToString(), item);
                                }
                            }
                        }
                    } while (totalResults > pageNo * 200);
                    #endregion
                }
                else if (status == "1")
                {
                    #region 获取仓库中的商品
                    do
                    {
                        pageNo++;
                        ItemsInventoryGetRequest req = new ItemsInventoryGetRequest
                        {
                            Fields   = reqName,
                            PageSize = 200,
                            PageNo   = pageNo
                        };
                        if (strMainWord.Length > 0)
                        {
                            req.Q = strMainWord;
                        }
                        if (sellerCat.Trim().Length > 0)
                        {
                            req.SellerCids = sellerCat;
                        }
                        ItemsInventoryGetResponse response = TopClient.Execute(req, sellerinfo.top_session, (TopClient.CrmPlatForm)useplatform);
                        if (response.IsError)
                        {
                            TxtLog.WriteLine("getItemListErrorLog", sellerinfo.strUserNick + ":" + sellerinfo.strUserId + "=== :出现异常:" + response.Body);
                        }
                        else
                        {
                            totalResults = response.TotalResults;
                            foreach (Item item in response.Items.Where(item => !itemDic.ContainsKey(item.NumIid.ToString())))
                            {
                                if (isnum_iid)
                                {
                                    strbNumIid.Append(item.NumIid.ToString() + ",");
                                }
                                else
                                {
                                    itemDic.Add(item.NumIid.ToString(), item);
                                }
                            }
                        }
                    } while (totalResults > pageNo * 200);
                    #endregion
                }
            }
            if (isnum_iid)
            {
                itemDic = SearchNumIid(strbNumIid.ToString(), sellerinfo, reqName, useplatform);
            }
            return(itemDic);
        }