private void ReadSettings(bool bindControl = true)
        {
            Algorithm   = BotSetting.AlgorithmList.Where(x => x.Id == Settings.Default.algorithm).First();
            CandleType  = new CandleType(Settings.Default.candleType);
            FeeRate     = Settings.Default.feeRate;
            TradeRate   = Settings.Default.tradeRate;
            Coin        = BotSetting.CoinList.Where(x => x.Ticker.Equals(Settings.Default.coin)).FirstOrDefault();
            Interval    = Convert.ToInt32(Settings.Default.interval);
            TriggerRate = Settings.Default.triggerRate;
            CandleCount = Convert.ToInt32(Settings.Default.candleCount);

            if (bindControl)
            {
                cmbAlgorithm.SelectedItem = Algorithm;
                cmbCandle.SelectedItem    = CandleType;
                txtFee.Text          = FeeRate.ToString();
                txtTradeRate.Text    = TradeRate.ToString();
                cmbCoin.SelectedItem = Coin;
                txtInterval.Text     = Interval.ToString();
                txtTriggerRate.Text  = TriggerRate.ToString();
                txtCandleCount.Text  = CandleCount.ToString();
            }
        }
Beispiel #2
0
        public int funTraderUserRating(string sellerNick, string sesionKey)
        {
            try
            {
                //查询卖家对应的评价策略
                DataTable tbSellerRateConfig = AutoMsgDB.GetSellerWhichSetAtuoRate(sellerNick);
                DateTime  startDate          = DateTime.Now.AddMonths(-1);
                DateTime  endDate            = DateTime.Now;
                DataTable tbRateData         = AutoMsgDB.GetRateTradeData(sellerNick, tbSellerRateConfig.Rows[0], startDate, endDate, sesionKey);
                if (tbRateData != null && tbRateData.Rows.Count > 0)
                {
                    RateConfig objRate = null;
                    foreach (DataRow rw in tbRateData.Rows)
                    {
                        #region 开始评价
                        try
                        {
                            objRate = new RateConfig();
                            string tid = rw["tid"].ToString();
                            objRate.Tid = Convert.ToInt64(tid);
                            objRate.Oid = Convert.ToInt64(rw["oid"].ToString());
                            string badRattingContent = tbSellerRateConfig.Rows[0]["badRateContent"].ToString();
                            if (rw["blackBuyerRatedIsRate"].Equals("1"))//不自动评价
                            {
                                continue;
                            }
                            else if (rw["blackBuyerRatedIsRate"].Equals("3"))
                            {
                                objRate.Content1 = badRattingContent;
                                objRate.Content2 = badRattingContent;
                                objRate.Content3 = badRattingContent;
                                objRate.Result   = "neutral";
                            }
                            else if (rw["blackBuyerRatedIsRate"].Equals("4"))
                            {
                                objRate.Content1 = badRattingContent;
                                objRate.Content2 = badRattingContent;
                                objRate.Content3 = badRattingContent;
                                objRate.Result   = "bad";
                            }
                            else
                            {
                                objRate.Content1 = tbSellerRateConfig.Rows[0]["content1"].ToString();
                                objRate.Content2 = tbSellerRateConfig.Rows[0]["content2"].ToString();
                                objRate.Content3 = tbSellerRateConfig.Rows[0]["content3"].ToString();
                                objRate.Result   = "good";
                            }
                            objRate.SellerNick = sellerNick;
                            string   strContent = "";
                            TBRating objRateDal = new TBRating();
                            //新增单个评价,if faild, then list rate
                            TradeRate obj = null;
                            obj = objRateDal.BuyerTradeRateOneByOne(objRate, ref strContent, sesionKey);
                            if (obj == null)
                            {
                                obj = objRateDal.BuyerTradeRate(objRate, ref strContent, sesionKey);
                            }

                            if (obj != null)
                            {   //rating sucessfull
                                obj.Content = strContent;
                                obj.Nick    = objRate.SellerNick;
                                obj.Tid     = Convert.ToInt64(rw["tid"]);
                                obj.Created = obj.Created;
                                //Console.WriteLine("评价卖家:" + obj.Nick + " 评价日期:" + obj.Created);
                                AutoMsgDB.AddRateHisWithSeller(obj);
                            }
                        }
                        catch (Exception ex)
                        {
                            ExceptionReporter.WriteLog(ex, ExceptionPostion.TBApply_Data);
                            continue;
                        }
                        #endregion
                    }
                }
            }
            catch (Exception ex)
            {
                ExceptionReporter.WriteLog(ex, ExceptionPostion.TBApply_Data);
            }
            return(0);
        }
        /// <summary>
        /// 判断是否符合赠送条件
        /// </summary>
        /// <param name="shop"></param>
        /// <param name="trade"></param>
        /// <returns></returns>
        private bool CheckFreeCardSend(ShopInfo shop, TradeRate tradeRate, Trade trade)
        {
            TradeRateData data   = new TradeRateData();
            string        result = string.Empty;

            //是否开启赠送优惠券
            if (shop.IsFreeCard == "0")
            {
                result = "卖家没有开启包邮卡赠送!";
                data.UpdateTradeRateResultFree(tradeRate, result);
                return(false);
            }

            ////判断该用户是否开启了发货短信
            //if (int.Parse(shop.MsgCount) <= 0)
            //{
            //    result = "卖家没有短信,无法通过短信告之客户支付宝红包卡号密码!";
            //    data.UpdateTradeRateResultAlipay(tradeRate, result);
            //    return false;
            //}

            //不是好评不赠送
            if (tradeRate.Result != "good")
            {
                result = "买家没有给好评,不赠送包邮卡!";
                data.UpdateTradeRateResultFree(tradeRate, result);
                return(false);
            }

            //礼品黑名单不赠送
            CouponData couponData = new CouponData();

            if (couponData.IsBlack(trade))
            {
                result = "买家【" + trade.BuyNick + "】在礼品黑名单中,不赠送包邮卡!";
                data.UpdateTradeRateResultFree(tradeRate, result);
                return(false);
            }

            //没有购买指定商品不送
            if (shop.IsItem == "1" && shop.ItemList.Length != 0)
            {
                //查看订单是否包含指定商品
                if (shop.ItemList.IndexOf(trade.NumIid) == -1)
                {
                    result = "买家订单商品为【" + trade.NumIid + "】,不包含指定商品【" + shop.ItemList + "】,不赠送包邮卡!";
                    data.UpdateTradeRateResultFree(tradeRate, result);
                    return(false);
                }
            }

            //没有在规定时间内好评不赠送 (self)
            if (trade.ShippingType == "self" && (DateTime.Parse(tradeRate.Created) - DateTime.Parse(trade.SendTime)).TotalSeconds > int.Parse(shop.MinDateSelf) * 86400)
            {
                result = "没有在规定时间内好评,该物流配送状态不可查,按照发货时间开始计算,发货时间是【" + trade.SendTime + "】,评价时间是【" + tradeRate.Created + "】,周期超过了卖家设定的最短时间【" + shop.MinDateSelf + "】天,不赠送支付宝红包!";
                data.UpdateTradeRateResultFree(tradeRate, result);
                return(false);
            }

            //没有在规定时间内好评不赠送 (system)
            if (trade.ShippingType == "system" && (DateTime.Parse(tradeRate.Created) - DateTime.Parse(trade.DeliveryEnd)).TotalSeconds > int.Parse(shop.MinDateSystem) * 86400)
            {
                result = "没有在规定时间内好评,该物流配送状态可查,按照物流签收时间开始计算,物流签收时间是【" + trade.DeliveryEnd + "】,评价时间是【" + tradeRate.Created + "】,周期超过了卖家设定的最短时间【" + shop.MinDateSystem + "】天,不赠送支付宝红包!";
                data.UpdateTradeRateResultFree(tradeRate, result);
                return(false);
            }

            //使用系统默认的好评和过期自动好评不赠送
            if (shop.IsCancelAuto == "1" &&
                ((tradeRate.Content == "好评!" && shop.Cancel1 == "1") ||
                 ((tradeRate.Content == "评价方未及时做出评价,系统默认好评!" || tradeRate.Content == "评价方未及时做出评价,系统默认好评!") && shop.Cancel2 == "1")
                ))
            {
                result = "卖家设置了默认好评不赠送包邮卡,此买家给的是系统默认评价,不赠送包邮卡!";
                data.UpdateTradeRateResultFree(tradeRate, result);
                return(false);
            }

            ////超过了每人的最大领取数量不赠送
            //CouponData dbCoupon = new CouponData();
            //Alipay alipay = dbCoupon.GetAlipayInfoById(shop);
            //if (!dbCoupon.CheckUserCanGetAlipay(trade, alipay))
            //{
            //    result = "卖家设置了红包【" + alipay.GUID + "】的最大领取数量是【" + alipay.Per + "】,此买家已经领取了【" + alipay.Per + "】张,所以不再赠送支付宝红包!";
            //    data.UpdateTradeRateResultAlipay(tradeRate, result);
            //    return false;
            //}

            FreeCardData dbFreeCard = new FreeCardData();

            //超出了包邮卡最大赠送量不赠送
            if (!dbFreeCard.CheckFreeCardCanSend(trade, shop))
            {
                result = "每个买家最多只能领取一张包邮卡,所以不再赠送包邮卡!";
                data.UpdateTradeRateResultFree(tradeRate, result);
                return(false);
            }



            //包含了指定的关键字赠送或者不赠送
            if (shop.IsKeyword == "1")
            {
                //先判定字数是否满足条件
                if (tradeRate.Content.Length < int.Parse(shop.WordCount))
                {
                    result = "卖家开启了评价内容自动审核,此评价的字数是【" + tradeRate.Content.Length.ToString() + "】个字,小于卖家设置的最少评论字数【" + shop.WordCount + "】个字,所以不赠送包邮卡!";
                    data.UpdateTradeRateResultFree(tradeRate, result);
                    return(false);
                }

                //判定是否为差评关键字判断
                if (shop.KeywordIsBad == "1")
                {
                    if (shop.BadKeyword != "")
                    {
                        int      isInclude = 0;
                        string   badword   = string.Empty;
                        string[] keyArray  = shop.BadKeyword.Split('|');
                        for (int i = 0; i < keyArray.Length; i++)
                        {
                            if (keyArray[i].Trim() != "")
                            {
                                if (tradeRate.Content.IndexOf(keyArray[i].Trim()) != -1)
                                {
                                    badword   = keyArray[i].Trim();
                                    isInclude = 1;
                                    break;
                                }
                            }
                        }

                        //判定
                        if (isInclude == 1)
                        {
                            result = "卖家开启了评价内容自动审核,买家评价包含差评关键字【" + badword + "】,所以不赠送包邮卡!";
                            data.UpdateTradeRateResultFree(tradeRate, result);
                            return(false);
                        }
                    }
                }
                else
                {
                    //再判定是否包含关键字
                    if (shop.Keyword != "")
                    {
                        int      isInclude = 0;
                        string[] keyArray  = shop.Keyword.Split('|');
                        for (int i = 0; i < keyArray.Length; i++)
                        {
                            if (keyArray[i].Trim() != "")
                            {
                                if (tradeRate.Content.IndexOf(keyArray[i].Trim()) != -1)
                                {
                                    isInclude = 1;
                                    break;
                                }
                            }
                        }

                        //判定
                        if (isInclude == 0)
                        {
                            result = "卖家开启了评价内容自动审核,买家评价没有包含关键字,所以不赠送包邮卡!";
                            data.UpdateTradeRateResultFree(tradeRate, result);
                            return(false);
                        }
                    }
                }
            }



            //该订单是否满足包邮卡赠送的地区限制
            FreeCard free = dbFreeCard.GetFreeCardById(shop.FreeCardId);

            string[] ary  = free.AreaList.Split(',');
            string   isok = "";

            if (free.IsFreeAreaList == "1")
            {
                //设置地区免运费
                for (int i = 0; i < ary.Length; i++)
                {
                    if (trade.receiver_state.IndexOf(ary[i]) != -1)
                    {
                        //记录免运费次数
                        return(true);
                    }
                    isok += "1";
                }

                if (ary.Length > 0)
                {
                    result = "只有免运费的地区才赠送包邮卡,订单地区为【" + trade.receiver_state + "】,包邮地区为【" + free.AreaList + "】!";
                    data.UpdateTradeRateResultFree(tradeRate, result);
                    return(false);
                }
            }
            else
            {
                //设置地区不免运费
                for (int i = 0; i < ary.Length; i++)
                {
                    if (trade.receiver_state.IndexOf(ary[i]) != -1)
                    {
                        result = "不免运费的包邮卡不赠送,订单地区为【" + trade.receiver_state + "】,不包邮地区为【" + ary[i] + "】!";
                        data.UpdateTradeRateResultFree(tradeRate, result);
                        return(false);
                    }
                }
            }

            ////如果该支付宝红包已经过期
            //if (dbCoupon.CheckAlipayExpired(trade, alipay))
            //{
            //    result = "该支付宝红包已经过期,所以不再赠送!";
            //    data.UpdateTradeRateResultAlipay(tradeRate, result);
            //    return false;
            //}

            return(true);
        }
        /// <summary>
        /// 判断是否符合赠送条件
        /// </summary>
        /// <param name="shop"></param>
        /// <param name="trade"></param>
        /// <returns></returns>
        private bool CheckAlipaySend(ShopInfo shop, TradeRate tradeRate, Trade trade)
        {
            TradeRateData data   = new TradeRateData();
            string        result = string.Empty;

            //是否开启赠送优惠券
            if (shop.IsAlipay == "0")
            {
                result = "卖家没有开启支付宝红包赠送!";
                data.UpdateTradeRateResultAlipay(tradeRate, result);
                return(false);
            }

            //判断该用户是否开启了发货短信
            if (int.Parse(shop.MsgCount) <= 0)
            {
                result = "卖家没有短信,无法通过短信告之客户支付宝红包卡号密码!";
                data.UpdateTradeRateResultAlipay(tradeRate, result);
                return(false);
            }

            //不是好评不赠送
            if (tradeRate.Result != "good")
            {
                result = "买家没有给好评,不赠送支付宝红包!";
                data.UpdateTradeRateResultAlipay(tradeRate, result);
                return(false);
            }

            //礼品黑名单不赠送
            CouponData couponData = new CouponData();

            if (couponData.IsBlack(trade))
            {
                result = "买家【" + trade.BuyNick + "】在礼品黑名单中,不赠送支付宝红包!";
                data.UpdateTradeRateResultAlipay(tradeRate, result);
                return(false);
            }

            //没有购买指定商品不送
            if (shop.IsItem == "1" && shop.ItemList.Length != 0)
            {
                //查看订单是否包含指定商品
                if (shop.ItemList.IndexOf(trade.NumIid) == -1)
                {
                    result = "买家订单商品为【" + trade.NumIid + "】,不包含指定商品【" + shop.ItemList + "】,不赠送支付宝红包!";
                    data.UpdateTradeRateResultAlipay(tradeRate, result);
                    return(false);
                }
            }

            //没有在规定时间内好评不赠送 (self)
            if (trade.ShippingType == "self" && (DateTime.Parse(tradeRate.Created) - DateTime.Parse(trade.SendTime)).TotalSeconds > int.Parse(shop.MinDateSelf) * 86400)
            {
                result = "没有在规定时间内好评,该物流配送状态不可查,按照发货时间开始计算,发货时间是【" + trade.SendTime + "】,评价时间是【" + tradeRate.Created + "】,周期超过了卖家设定的最短时间【" + shop.MinDateSelf + "】天,不赠送支付宝红包!";
                data.UpdateTradeRateResultAlipay(tradeRate, result);
                return(false);
            }

            //没有在规定时间内好评不赠送 (system)
            if (trade.ShippingType == "system" && (DateTime.Parse(tradeRate.Created) - DateTime.Parse(trade.DeliveryEnd)).TotalSeconds > int.Parse(shop.MinDateSystem) * 86400)
            {
                result = "没有在规定时间内好评,该物流配送状态可查,按照物流签收时间开始计算,物流签收时间是【" + trade.DeliveryEnd + "】,评价时间是【" + tradeRate.Created + "】,周期超过了卖家设定的最短时间【" + shop.MinDateSystem + "】天,不赠送支付宝红包!";
                data.UpdateTradeRateResultAlipay(tradeRate, result);
                return(false);
            }

            //使用系统默认的好评和过期自动好评不赠送
            if (shop.IsCancelAuto == "1" &&
                ((tradeRate.Content == "好评!" && shop.Cancel1 == "1") ||
                 ((tradeRate.Content == "评价方未及时做出评价,系统默认好评!" || tradeRate.Content == "评价方未及时做出评价,系统默认好评!") && shop.Cancel2 == "1")
                ))
            {
                result = "卖家设置了默认好评不赠送支付宝红包,此买家给的是系统默认评价,不赠送支付宝红包!";
                data.UpdateTradeRateResultAlipay(tradeRate, result);
                return(false);
            }


            CouponData dbCoupon = new CouponData();
            Alipay     alipay   = dbCoupon.GetAlipayInfoById(shop);


            //每订单最多赠送一个
            if (!dbCoupon.CheckOrderAlipayCanSend(trade, alipay))
            {
                result = "每订单最多赠送一个支付宝红包!";
                data.UpdateTradeRateResult(tradeRate, result);
                return(false);
            }

            //超过了每人的最大领取数量不赠送
            if (!dbCoupon.CheckUserCanGetAlipay(trade, alipay))
            {
                result = "卖家设置了红包【" + alipay.GUID + "】的最大领取数量是【" + alipay.Per + "】,此买家已经领取了【" + alipay.Per + "】张,所以不再赠送支付宝红包!";
                data.UpdateTradeRateResultAlipay(tradeRate, result);
                return(false);
            }

            //超出了优惠券最大赠送量不赠送
            if (!dbCoupon.CheckAlipayCanSend(trade, alipay))
            {
                result = "系统赠送的支付宝红包超出了卖家设置的最大赠送数量,所以不再赠送支付宝红包!";
                data.UpdateTradeRateResultAlipay(tradeRate, result);
                return(false);
            }

            //包含了指定的关键字赠送或者不赠送
            if (shop.IsKeyword == "1")
            {
                //先判定字数是否满足条件
                if (tradeRate.Content.Length < int.Parse(shop.WordCount))
                {
                    result = "卖家开启了评价内容自动审核,此评价的字数是【" + tradeRate.Content.Length.ToString() + "】个字,小于卖家设置的最少评论字数【" + shop.WordCount + "】个字,所以不赠送支付宝红包!";
                    data.UpdateTradeRateResultAlipay(tradeRate, result);
                    return(false);
                }

                //判定是否为差评关键字判断
                if (shop.KeywordIsBad == "1")
                {
                    if (shop.BadKeyword != "")
                    {
                        int      isInclude = 0;
                        string   badword   = string.Empty;
                        string[] keyArray  = shop.BadKeyword.Split('|');
                        for (int i = 0; i < keyArray.Length; i++)
                        {
                            if (keyArray[i].Trim() != "")
                            {
                                if (tradeRate.Content.IndexOf(keyArray[i].Trim()) != -1)
                                {
                                    badword   = keyArray[i].Trim();
                                    isInclude = 1;
                                    break;
                                }
                            }
                        }

                        //判定
                        if (isInclude == 1)
                        {
                            result = "卖家开启了评价内容自动审核,买家评价包含差评关键字【" + badword + "】,所以不赠送支付宝红包!";
                            data.UpdateTradeRateResultAlipay(tradeRate, result);
                            return(false);
                        }
                    }
                }
                else
                {
                    //再判定是否包含关键字
                    if (shop.Keyword != "")
                    {
                        int      isInclude = 0;
                        string[] keyArray  = shop.Keyword.Split('|');
                        for (int i = 0; i < keyArray.Length; i++)
                        {
                            if (keyArray[i].Trim() != "")
                            {
                                if (tradeRate.Content.IndexOf(keyArray[i].Trim()) != -1)
                                {
                                    isInclude = 1;
                                    break;
                                }
                            }
                        }

                        //判定
                        if (isInclude == 0)
                        {
                            result = "卖家开启了评价内容自动审核,买家评价没有包含关键字,所以不赠送支付宝红包!";
                            data.UpdateTradeRateResultAlipay(tradeRate, result);
                            return(false);
                        }
                    }
                }
            }

            //如果该支付宝红包已经过期
            if (dbCoupon.CheckAlipayExpired(trade, alipay))
            {
                result = "该支付宝红包已经过期,所以不再赠送!";
                data.UpdateTradeRateResultAlipay(tradeRate, result);
                return(false);
            }

            return(true);
        }
        /// <summary>
        /// 判断是否符合赠送条件
        /// </summary>
        /// <param name="shop"></param>
        /// <param name="trade"></param>
        /// <returns></returns>
        private bool CheckCouponSend(ShopInfo shop, TradeRate tradeRate, Trade trade)
        {
            TradeRateData data   = new TradeRateData();
            string        result = string.Empty;

            //是否开启赠送优惠券
            if (shop.IsCoupon == "0")
            {
                result = "卖家没有开启优惠券赠送!";
                data.UpdateTradeRateResult(tradeRate, result);
                return(false);
            }

            //不是好评不赠送
            if (tradeRate.Result != "good")
            {
                result = "买家没有给好评,不赠送优惠券!";
                data.UpdateTradeRateResult(tradeRate, result);
                return(false);
            }


            //礼品黑名单不赠送
            CouponData couponData = new CouponData();

            if (couponData.IsBlack(trade))
            {
                result = "买家【" + trade.BuyNick + "】在礼品黑名单中,不赠送优惠券!";
                data.UpdateTradeRateResult(tradeRate, result);
                return(false);
            }

            Console.WriteLine(shop.IsItem + "--" + shop.ItemList + "-" + trade.NumIid);

            //没有购买指定商品不送
            if (shop.IsItem == "1" && shop.ItemList.Length != 0)
            {
                //查看订单是否包含指定商品
                if (shop.ItemList.IndexOf(trade.NumIid) == -1)
                {
                    result = "买家订单商品为【" + trade.NumIid + "】,不包含指定商品【" + shop.ItemList + "】,不赠送优惠券!";
                    data.UpdateTradeRateResult(tradeRate, result);
                    return(false);
                }
            }

            //没有在规定时间内好评不赠送 (self)
            if (trade.ShippingType == "self" && (DateTime.Parse(tradeRate.Created) - DateTime.Parse(trade.SendTime)).TotalSeconds > int.Parse(shop.MinDateSelf) * 86400)
            {
                result = "没有在规定时间内好评,该物流配送状态不可查,按照发货时间开始计算,发货时间是【" + trade.SendTime + "】,评价时间是【" + tradeRate.Created + "】,周期超过了卖家设定的最短时间【" + shop.MinDateSelf + "】天,不赠送优惠券!";
                data.UpdateTradeRateResult(tradeRate, result);
                return(false);
            }

            //没有在规定时间内好评不赠送 (system)
            if (trade.ShippingType == "system" && (DateTime.Parse(tradeRate.Created) - DateTime.Parse(trade.DeliveryEnd)).TotalSeconds > int.Parse(shop.MinDateSystem) * 86400)
            {
                result = "没有在规定时间内好评,该物流配送状态可查,按照物流签收时间开始计算,物流签收时间是【" + trade.DeliveryEnd + "】,评价时间是【" + tradeRate.Created + "】,周期超过了卖家设定的最短时间【" + shop.MinDateSystem + "】天,不赠送优惠券!";
                Console.Write(result + "!!!!!!!!!!!!\r\n");
                data.UpdateTradeRateResult(tradeRate, result);
                return(false);
            }

            //使用系统默认的好评和过期自动好评不赠送
            if (shop.IsCancelAuto == "1" &&
                ((tradeRate.Content == "好评!" && shop.Cancel1 == "1") ||
                 ((tradeRate.Content == "评价方未及时做出评价,系统默认好评!" || tradeRate.Content == "评价方未及时做出评价,系统默认好评!") && shop.Cancel2 == "1")
                ))
            {
                result = "卖家设置了默认好评不赠送优惠券,此买家给的是系统默认评价,不赠送优惠券!";
                data.UpdateTradeRateResult(tradeRate, result);
                return(false);
            }

            //超过了每人的最大领取数量不赠送
            CouponData dbCoupon = new CouponData();
            Coupon     coupon   = dbCoupon.GetCouponInfoById(shop);

            if (!dbCoupon.CheckUserCanGetCoupon(trade, coupon))
            {
                result = "卖家设置了优惠券【" + coupon.TaobaoCouponId + "】的最大领取数量是【" + coupon.Per + "】,此买家已经领取了【" + coupon.Per + "】张,所以不再赠送优惠券!";
                data.UpdateTradeRateResult(tradeRate, result);
                return(false);
            }

            //超出了优惠券最大赠送量不赠送
            if (!dbCoupon.CheckCouponCanSend(trade, coupon))
            {
                result = "系统赠送的优惠券超出了卖家设置的最大赠送数量,所以不再赠送优惠券!";
                data.UpdateTradeRateResult(tradeRate, result);
                return(false);
            }

            //如果该订单赠送过则不赠送
            if (!dbCoupon.CheckUserCouponSend(trade, coupon))
            {
                //result = "此订单已经赠送过优惠券,所以不再赠送优惠券!";
                //data.UpdateTradeRateResult(tradeRate, result);
                return(false);
            }

            //包含了指定的关键字赠送或者不赠送
            if (shop.IsKeyword == "1")
            {
                //先判定字数是否满足条件
                if (tradeRate.Content.Length < int.Parse(shop.WordCount))
                {
                    result = "卖家开启了评价内容自动审核,此评价的字数是【" + tradeRate.Content.Length.ToString() + "】个字,小于卖家设置的最少评论字数【" + shop.WordCount + "】个字,所以不赠送优惠券!";
                    data.UpdateTradeRateResult(tradeRate, result);
                    return(false);
                }

                //判定是否为差评关键字判断
                if (shop.KeywordIsBad == "1")
                {
                    if (shop.BadKeyword != "")
                    {
                        int      isInclude = 0;
                        string   badword   = string.Empty;
                        string[] keyArray  = shop.BadKeyword.Split('|');
                        for (int i = 0; i < keyArray.Length; i++)
                        {
                            if (keyArray[i].Trim() != "")
                            {
                                if (tradeRate.Content.IndexOf(keyArray[i].Trim()) != -1)
                                {
                                    badword   = keyArray[i].Trim();
                                    isInclude = 1;
                                    break;
                                }
                            }
                        }

                        //判定
                        if (isInclude == 1)
                        {
                            result = "卖家开启了评价内容自动审核,买家评价包含差评关键字【" + badword + "】,所以不赠送优惠券!";
                            data.UpdateTradeRateResult(tradeRate, result);
                            return(false);
                        }
                    }
                }
                else
                {
                    //再判定是否包含关键字
                    if (shop.Keyword != "")
                    {
                        int      isInclude = 0;
                        string[] keyArray  = shop.Keyword.Split('|');
                        for (int i = 0; i < keyArray.Length; i++)
                        {
                            if (keyArray[i].Trim() != "")
                            {
                                if (tradeRate.Content.IndexOf(keyArray[i].Trim()) != -1)
                                {
                                    isInclude = 1;
                                    break;
                                }
                            }
                        }

                        //判定
                        if (isInclude == 0)
                        {
                            result = "卖家开启了评价内容自动审核,买家评价没有包含关键字,所以不赠送优惠券!";
                            data.UpdateTradeRateResult(tradeRate, result);
                            return(false);
                        }
                    }
                }
            }

            ////订单包含商品判断
            //TradeData tradeData = new TradeData();
            //if (tradeData.IsIncludeProduct(trade, shop))
            //{
            //    result = "卖家开启了特定商品赠送,该订单里面商品不符合条件,所以不赠送优惠券!";
            //    data.UpdateTradeRateResult(tradeRate, result);
            //    return false;
            //}

            return(true);
        }
        /// <summary>
        /// 处理订单完成时的相应逻辑
        /// </summary>
        public void Start()
        {
            //获取店铺的基础数据
            ShopData data = new ShopData();
            ShopInfo shop = data.ShopInfoGetByNick(TradeInfo.Nick);

            //Console.Write(shop.Session + "!!!!!!!!!!!!\r\n");
            if (shop.Version != "2" && shop.Version != "3")
            {
                return;
            }

            //通过TOP接口查询该订单的详细数据并记录到数据库中
            TopApiHaoping api       = new TopApiHaoping(shop.Session);
            TradeData     tradeData = new TradeData();
            Trade         trade     = tradeData.GetTradeDetailShippingInfo(TradeInfo);

            trade = api.GetTradeByTid(trade);

            //记录该订单对应的评价记录
            TradeRate tradeRate = api.GetTradeRate(trade);

            tradeRate.ItemId = trade.NumIid;
            tradeRate.Nick   = TradeInfo.Nick;

            //只有双方都评价了才会有插入数据库和赠送的操作
            if (tradeRate.Content != "")
            {
                //判断该订单是否已经有过评价记录
                TradeRateData dbTradeRate = new TradeRateData();
                if (!dbTradeRate.CheckTradeRateExits(tradeRate))
                {
                    //没有记录过写入数据库
                    dbTradeRate.InsertTradeInfo(tradeRate);
                }

                //判断该订单是否存在
                TradeData dbTrade = new TradeData();
                if (!dbTrade.CheckTradeExits(trade))
                {
                    //更新该订单的评价时间
                    dbTrade.InsertTradeInfo(trade);
                }

                //更新该订单的评价时间
                dbTrade.UpdateTradeRateById(trade, tradeRate);
            }
            else
            {
                //否则中断
                return;
            }

            //判断如果是分销的订单,则不处理
            if (trade.OrderType.ToLower() == "fenxiao")
            {
                return;
            }

            try
            {
                //更新订单的优惠券使用情况
                TopApiHaoping apiCoupon = new TopApiHaoping(shop.Session);
                string        result    = apiCoupon.GetCouponTradeTotalByNick(trade);

                MatchCollection match = new Regex(@"<promotion_details list=""true""><promotion_detail><discount_fee>([^\<]*)</discount_fee><id>[0-9]*</id><promotion_desc>[^\<]*</promotion_desc><promotion_id>shopbonus-[0-9]*_[0-9]*-([0-9]*)</promotion_id><promotion_name>店铺优惠券</promotion_name></promotion_detail>", RegexOptions.IgnoreCase).Matches(result);

                if (match.Count != 0)
                {
                    string price    = match[0].Groups[1].ToString();
                    string couponid = match[0].Groups[2].ToString();

                    if (couponid.Length != 0)
                    {
                        TradeData dataTradeCoupon = new TradeData();
                        dataTradeCoupon.UpdateTradeCouponInfo(trade, price, couponid);
                    }
                }
            }
            catch { }

            //判断是否开启了客服审核,如果开启了则自动记录并中断
            if (shop.IsKefu == "1")
            {
                TradeRateData dataKefu   = new TradeRateData();
                string        resultKefu = "手动审核订单!";
                dataKefu.UpdateTradeRateResult(tradeRate, resultKefu);

                //更新该订单的评价为待审核状态
                TradeData dbTrade = new TradeData();
                if (!dbTrade.CheckTradeRateCheckExits(trade))
                {
                    dbTrade.UpdateTradeKefuById(trade, tradeRate);
                }

                try
                {
                    //记录会员信息数据
                    GetUserData getUser = new GetUserData();
                    getUser.Get(trade);
                }
                catch { }

                return;
            }

            Console.WriteLine(trade.ShippingType + "!!");

            //获取订单的具体物流状态,如果订单物流状态为空则获取物流信息
            if (trade.ShippingType != "system" && trade.ShippingType != "self")
            {
                //获取该订单的物流状态
                TopApiHaoping apiHaoping = new TopApiHaoping(shop.Session);
                string        status     = apiHaoping.GetShippingStatusByTid(trade);
                TradeData     dbTrade    = new TradeData();

                Console.Write(status + "\r\n");
                //如果该物流信息不存在
                if (status.IndexOf("不存在") != -1)
                {
                    //如果该物流公司不支持查询则更新为self
                    dbTrade.UpdateTradeShippingStatusSelf(trade, status);
                }

                //获取该订单的物流相关信息
                trade = api.GetOrderShippingInfo(trade);
                if (!dbTrade.IsTaobaoCompany(trade))
                {
                    //如果不是淘宝合作物流则直接更新
                    dbTrade.UpdateTradeShippingStatusSelf(trade, status);
                    trade.ShippingType = "self";
                }
                else
                {
                    //根据服务器的物流状态进行判断,如果物流状态是已签收
                    if (status == "ACCEPTED_BY_RECEIVER" || status == "ACCEPTING" || status == "ACCEPTED")
                    {
                        string result = api.GetShippingStatusDetailByTid(trade);
                        Console.Write("【" + result + "】\r\n");
                        //如果是虚拟物品
                        if (result.IndexOf("该订单未指定运单号") != -1)
                        {
                            //如果该物流公司不支持查询则更新为self
                            dbTrade.UpdateTradeShippingStatusSelf(trade, status);
                        }

                        //如果订单不是服务器错误
                        if (result.IndexOf("company-not-support") != -1)
                        {
                            //如果该物流公司不支持查询则更新为self
                            dbTrade.UpdateTradeShippingStatusSelf(trade, status);
                        }

                        //再根据订单的详细物流信息判断签收的状态
                        if (result.IndexOf("签收人") != -1 || result.IndexOf(" 妥投") != -1 || result.IndexOf(" 签收") != -1 || result.IndexOf("正常签收") != -1 || result.IndexOf(" 已签收") != -1)
                        {
                            //如果物流已经签收了则更新对应订单状态
                            trade.DeliveryEnd  = utils.GetShippingEndTime(result);;
                            trade.DeliveryMsg  = result;
                            trade.ShippingType = "system";

                            //如果物流到货时间还是为空
                            if (trade.DeliveryEnd == "")
                            {
                                LogData dbLog = new LogData();
                                dbLog.InsertErrorLog(trade.Nick, "deliveryDateNullOrder", "", result, "");
                            }

                            dbTrade.UpdateTradeShippingStatusSystem(trade, status);
                        }
                    }
                }
            }

            //处理优惠券赠送及短信-上LOCK锁定
            lock (TradeSuccess.padlockRate)
            {
                //淘宝优惠券赠送
                bool isSendCoupon = true;
                //判断是否符合赠送条件
                if (CheckCouponSend(shop, tradeRate, trade))
                {
                    //如果符合赠送条件调用赠送接口
                    CouponData dbCoupon = new CouponData();
                    Coupon     coupon   = dbCoupon.GetCouponInfoById(shop);

                    //判定该优惠券是否过期或删除
                    if (!dbCoupon.CheckCouponCanUsed(shop))
                    {
                        //优惠券过期,自动帮客户延长优惠券期限
                        //考虑到淘宝即将开启短授权,该功能改成消息通知,暂不制作
                        isSendCoupon = false;
                        //return;
                    }
                    else
                    {
                        //解决多线程冲突问题先插入优惠券赠送记录,如果赠送失败再删除记录
                        string couponId = string.Empty;
                        if (dbCoupon.InsertCouponSendRecord(trade, shop, couponId))
                        {
                            string taobaoResult = string.Empty;
                            couponId = api.SendCoupon(trade.BuyNick, coupon.TaobaoCouponId, ref taobaoResult);

                            //获取的赠送接口的返回结果
                            if (couponId != "")
                            {
                                //如果成功赠送则记录
                                dbCoupon.UpdateCouponSendRecord(trade, shop, couponId);
                            }
                            else
                            {
                                //如果没有赠送成功则删除刚才的临时记录
                                dbCoupon.DeleteCouponSendRecord(trade, shop, couponId);
                                Console.WriteLine(couponId);
                                try
                                {
                                    //记录淘宝自身错误
                                    string        err      = new Regex(@"<reason>([^<]*)</reason>", RegexOptions.IgnoreCase).Match(taobaoResult).Groups[1].ToString();
                                    TradeRateData dataRate = new TradeRateData();
                                    if (err.Length == 0)
                                    {
                                        taobaoResult += "淘宝系统错误,不赠送优惠券,错误代码是【" + taobaoResult + "】!";
                                    }
                                    else
                                    {
                                        taobaoResult += "淘宝系统错误,不赠送优惠券,错误代码是【" + err + "】!";
                                    }
                                    dataRate.UpdateTradeRateResult(tradeRate, taobaoResult);
                                }
                                catch { }
                                //有可能是客户订购的优惠券服务已经到期记录错误信息并中断
                                //return;
                                isSendCoupon = false;
                            }
                        }
                        else
                        {
                            isSendCoupon = false;
                        }
                    }
                }
                else
                {
                    isSendCoupon = false;
                }

                //支付宝现金券赠送
                bool isSendAlipay = true;
                //判断是否符合赠送条件
                if (CheckAlipaySend(shop, tradeRate, trade))
                {
                    //获取一条需要赠送的支付宝红包数据
                    CouponData   cou    = new CouponData();
                    AlipayDetail detail = cou.GetAlipayDetailInfoById(shop);

                    //如果符合赠送条件调用短信接口直接将红包发到客户手机上
                    string shopName = shop.MsgShopName;
                    if (shop.MsgShopName.Length == 0)
                    {
                        shopName = shop.Nick;
                    }
                    string msgAlipay = "亲," + shopName + "赠送您支付宝红包,卡号" + detail.Card + "密码" + detail.Pass + ",您可以到支付宝绑定使用。";
                    Console.Write(msgAlipay + "\r\n");
                    string msgResultAlipay = Message.Send(trade.Mobile, msgAlipay);

                    Console.Write(msgResultAlipay + "\r\n");
                    //更新支付宝红包使用状态
                    cou.InsertAlipaySendRecord(trade, shop, detail);

                    //记录短信发送记录
                    ShopData dbAlipay = new ShopData();
                    if (msgResultAlipay != "0")
                    {
                        dbAlipay.InsertShopMsgLog(shop, trade, msgAlipay, msgResultAlipay, "alipay");
                    }
                    else
                    {
                        isSendAlipay = false;
                        dbAlipay.InsertShopErrMsgLog(shop, trade, msgAlipay, msgResultAlipay, "alipay");
                    }
                    shop.MsgCount = (int.Parse(shop.MsgCount) - 1).ToString();
                }
                else
                {
                    isSendAlipay = false;
                }

                //包邮卡赠送
                bool isSendFreeCard = true;
                try
                {
                    //判断是否符合赠送条件
                    if (CheckFreeCardSend(shop, tradeRate, trade))
                    {
                        //赠送包邮卡
                        FreeCardData freeData = new FreeCardData();
                        freeData.SendFreeCard(shop, trade);

                        //判断该用户是否开启了包邮卡短信
                        if (shop.MsgIsFreecard == "1" && int.Parse(shop.MsgCount) > 0)
                        {
                            ShopData db   = new ShopData();
                            FreeCard free = freeData.GetFreeCardById(shop.FreeCardId);
                            //发送短信
                            string msg = Message.GetMsg(shop.MsgFreecardContent, shop.MsgShopName, TradeInfo.BuyNick, shop.IsCoupon, free.Name);

                            //手机号码为空不发
                            if (trade.Mobile.Length == 0)
                            {
                                return;
                            }

                            if (!db.IsSendMsgToday(trade, "freecard"))
                            {
                                string msgResult = Message.Send(trade.Mobile, msg);

                                //记录
                                if (msgResult != "0")
                                {
                                    db.InsertShopMsgLog(shop, trade, msg, msgResult, "freecard");
                                }
                                else
                                {
                                    db.InsertShopErrMsgLog(shop, trade, msg, msgResult, "freecard");
                                }
                                shop.MsgCount = (int.Parse(shop.MsgCount) - 1).ToString();
                            }
                        }
                    }
                    else
                    {
                        isSendFreeCard = false;
                    }
                }
                catch (Exception e) {
                    Console.WriteLine(e.Message + e.StackTrace + e.Source);
                }



                try
                {
                    //记录会员信息数据
                    GetUserData getUser = new GetUserData();
                    getUser.Get(trade);
                }
                catch { }

                //Console.WriteLine(isSendCoupon + "!!");
                //Console.WriteLine(isSendAlipay + "!!");
                //Console.WriteLine(trade.Mobile + "!!");

                //如果优惠券和支付宝现金都没有赠送成功,则直接中断方法不发短信
                //2012.9.17改为只有赠送成功优惠券才发送此短信
                if (!isSendCoupon)
                {
                    return;
                }

                //判断该用户是否开启了发货短信
                if (shop.MsgIsCoupon == "1" && int.Parse(shop.MsgCount) > 0)
                {
                    ShopData db = new ShopData();
                    //发送短信
                    string msg = Message.GetMsg(shop.MsgCouponContent, shop.MsgShopName, TradeInfo.BuyNick, shop.IsCoupon);
                    //string msg = Message.GetMsg(shop, trade, shop.MsgCouponContent);

                    //手机号码为空不发
                    if (trade.Mobile.Length == 0)
                    {
                        return;
                    }

                    if (!db.IsSendMsgToday(trade, "gift"))
                    {
                        ////先插入数据库 解决多优惠券赠送短信多发问题
                        //db.InsertShopMsgLog(shop, trade, msg, "888888", "gift");

                        string msgResult = Message.Send(trade.Mobile, msg);

                        //记录
                        if (msgResult != "0")
                        {
                            db.InsertShopMsgLog(shop, trade, msg, msgResult, "gift");
                        }
                        else
                        {
                            db.InsertShopErrMsgLog(shop, trade, msg, msgResult, "gift");
                        }
                        shop.MsgCount = (int.Parse(shop.MsgCount) - 1).ToString();
                    }
                }
            }
        }
Beispiel #7
0
        /// <summary>
        /// 记录包邮卡赠送的结果
        /// </summary>
        /// <param name="tradeRate"></param>
        /// <param name="result"></param>
        public void UpdateTradeRateResultFree(TradeRate tradeRate, string result)
        {
            string sql = "UPDATE TCS_TradeRate SET sendresultfree = '" + result + "' WHERE orderid = '" + tradeRate.Tid + "'";

            utils.ExecuteNonQuery(sql);
        }
Beispiel #8
0
        private void SendMessageDoTimer_Elapsed(object sender, ElapsedEventArgs e)
        {
            try
            {
                sendMessageDoTimer.Enabled = true;
                //查询同步过来的消息MESSAGE
                //查询主动通知信息从DB开始用于发送短信:只取交易完成的数据用于秒评
                DataTable tbTrade = DBUtil.GetTradeData("");
                //如果该卖家有消息推送
                if (!busySend && tbTrade != null && tbTrade.Rows.Count > 0)
                {
                    busySend = true;
                    foreach (DataRow row in tbTrade.Rows)//轮训通知消息
                    {
                        string   sellerNick = row["seller_nick"].ToString();
                        string   buyerNick  = row["buyer_nick"].ToString();
                        string   tid        = row["tid"].ToString();
                        DateTime createDate = Convert.ToDateTime(row["createDate"]);

                        // 获取卖家保存的自动评价策略
                        DataTable dtAutoConfig    = DBUtil.GetSellerAutoRateConfig(sellerNick);
                        int       isMiaoRate      = 0;
                        int       isWaitBuyerRate = 0;
                        int       isQiangRate     = 0;
                        if (dtAutoConfig == null || dtAutoConfig.Rows.Count == 0)
                        {
                            continue;
                        }

                        isMiaoRate      = Convert.ToInt32(dtAutoConfig.Rows[0]["isMiaoRate"]);
                        isWaitBuyerRate = Convert.ToInt32(dtAutoConfig.Rows[0]["isWaitBuyerRate"]);
                        isQiangRate     = Convert.ToInt32(dtAutoConfig.Rows[0]["isQiangRate"]);
                        //判断卖家是否开通秒评
                        if (isMiaoRate == 1)
                        {
                            #region 秒评

                            //评价开始
                            string sessionKey = DBUtil.GetSellerSessionKey(sellerNick);
                            if (!string.IsNullOrEmpty(sessionKey))
                            {
                                // 获取卖家保存的评价策略
                                DataTable tbSellerRateConfig = DBUtil.GetSellerRateConfig(sellerNick);
                                //检查商家设置:秒评:只检查该用户是否在黑名单
                                if (!DBUtil.CheckIsBlacklst(sellerNick, buyerNick))
                                {
                                    Trade objTrade = TBTrade.GetBuyerTrade(tid, sessionKey);
                                    if (objTrade != null && objTrade.Orders.Count > 0)
                                    {
                                        foreach (Order o in objTrade.Orders)
                                        {
                                            if (!o.SellerRate)
                                            {
                                                RateConfig objRate = new RateConfig();
                                                objRate.Tid        = Convert.ToInt64(tid);
                                                objRate.Oid        = o.Oid;
                                                objRate.Content1   = tbSellerRateConfig.Rows[0]["content1"].ToString();
                                                objRate.Content2   = tbSellerRateConfig.Rows[0]["content2"].ToString();
                                                objRate.Content3   = tbSellerRateConfig.Rows[0]["content3"].ToString();
                                                objRate.Result     = tbSellerRateConfig.Rows[0]["result"].ToString();
                                                objRate.SellerNick = sellerNick;
                                                string    strContent = "";
                                                TBRating  objRateDal = new TBRating();
                                                TradeRate obj        = null;
                                                //调用接口 新增单个评价
                                                obj = objRateDal.BuyerTradeRateOneByOne(objRate, ref strContent, sessionKey);
                                                if (obj == null)
                                                {
                                                    // 调用API进行批量评价
                                                    obj = objRateDal.BuyerTradeRate(objRate, ref strContent, sessionKey);
                                                }
                                                if (obj != null)
                                                {       //rating sucessfull
                                                    obj.Content = strContent;
                                                    obj.Nick    = objRate.SellerNick;
                                                    obj.Tid     = Convert.ToInt64(tid);
                                                    obj.Created = obj.Created;

                                                    // 添加卖家评价:秒评
                                                    //Console.WriteLine("评价卖家:" + obj.Nick + " 评价日期:" + obj.Created);
                                                    DBUtil.AddRateHisWithSeller(obj, "秒评");

                                                    Console.WriteLine("当前卖家:" + sellerNick + "评价时间:" + DateTime.Now.ToString());
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                            #endregion
                        }

                        //判断卖家是否开通买家评价以后评价
                        if (isWaitBuyerRate == 1)
                        {
                            #region 方案二(买家评价以后评价)
                            string     sessionKey = DBUtil.GetSellerSessionKey(sellerNick);
                            RateConfig objRate    = new RateConfig();
                            TBRating   objRateDal = new TBRating();

                            objRate.Content1   = dtAutoConfig.Rows[0]["content1"].ToString();
                            objRate.Content2   = dtAutoConfig.Rows[0]["content2"].ToString();
                            objRate.Content3   = dtAutoConfig.Rows[0]["content3"].ToString();
                            objRate.SellerNick = sellerNick;
                            //默认好评
                            objRate.Result = dtAutoConfig.Rows[0]["result"].ToString();

                            //检查买家是否评论
                            List <TradeRate> sates   = objRateDal.GetTradeRate(sessionKey);
                            bool             isRated = false;
                            foreach (TradeRate trade in sates)
                            {
                                if (trade.Tid.ToString() == tid)
                                {
                                    isRated = true;
                                    break;
                                }
                            }
                            if (isRated) //买家已评价
                            {
                                //买家在黑名单
                                if (DBUtil.CheckIsBlacklst(sellerNick, buyerNick))
                                {
                                    int blackBuyerRatedIsRate = Convert.ToInt32(dtAutoConfig.Rows[0]["blackBuyerRatedIsRate"]);
                                    if (blackBuyerRatedIsRate == 1)
                                    {
                                        continue;
                                    }
                                    if (blackBuyerRatedIsRate == 3)
                                    {
                                        objRate.Result         = "neutral";
                                        objRate.BadRateContent = dtAutoConfig.Rows[0]["badRateContent"].ToString();
                                        objRate.Content1       = dtAutoConfig.Rows[0]["badRateContent"].ToString();
                                        objRate.Content2       = dtAutoConfig.Rows[0]["badRateContent"].ToString();
                                        objRate.Content3       = dtAutoConfig.Rows[0]["badRateContent"].ToString();
                                    }
                                    if (blackBuyerRatedIsRate == 4)
                                    {
                                        objRate.Result         = "bad";
                                        objRate.BadRateContent = dtAutoConfig.Rows[0]["badRateContent"].ToString();
                                        objRate.Content1       = dtAutoConfig.Rows[0]["badRateContent"].ToString();
                                        objRate.Content2       = dtAutoConfig.Rows[0]["badRateContent"].ToString();
                                        objRate.Content3       = dtAutoConfig.Rows[0]["badRateContent"].ToString();
                                    }
                                }
                            }
                            else //买家未评价
                            {
                                //买家在黑名单
                                if (DBUtil.CheckIsBlacklst(sellerNick, buyerNick))
                                {
                                    //检查是否到评论时间
                                    TimeSpan ts           = DateTime.Now - createDate;
                                    int      jiange       = (ts.Days * 24 * 60 * 60) + (ts.Hours * 60 * 60) + (ts.Minutes * 60) + (ts.Minutes);
                                    int      congigJiange = (Convert.ToInt32(dtAutoConfig.Rows[0]["blackBuyerNoRateQiangRateDay"]) * 24 * 60 * 60)
                                                            + (Convert.ToInt32(dtAutoConfig.Rows[0]["blackBuyerNoRateQiangRateHour"]) * 60 * 60) + (Convert.ToInt32(dtAutoConfig.Rows[0]["blackBuyerNoRateQiangRateFen"]) * 60);
                                    if (congigJiange < jiange)
                                    {
                                        continue;
                                    }
                                }
                                else //买家不在黑名单
                                {
                                    //检查是否到评论时间
                                    TimeSpan ts           = DateTime.Now - createDate;
                                    int      jiange       = (ts.Days * 24 * 60 * 60) + (ts.Hours * 60 * 60) + (ts.Minutes * 60) + (ts.Minutes);
                                    int      congigJiange = (Convert.ToInt32(dtAutoConfig.Rows[0]["waitBuyerTimeDay"]) * 24 * 60 * 60)
                                                            + (Convert.ToInt32(dtAutoConfig.Rows[0]["waitBuyerTimeHour"]) * 60 * 60) + (Convert.ToInt32(dtAutoConfig.Rows[0]["waitBuyerTimeFen"]) * 60);
                                    if (congigJiange < jiange)
                                    {
                                        continue;
                                    }
                                }
                            }

                            //评价开始
                            if (!string.IsNullOrEmpty(sessionKey))
                            {
                                // 获取卖家保存的评价策略
                                //DataTable tbSellerRateConfig = DBUtil.GetSellerRateConfig(sellerNick);

                                Trade objTrade = TBTrade.GetBuyerTrade(tid, sessionKey);
                                if (objTrade != null && objTrade.Orders.Count > 0)
                                {
                                    foreach (Order o in objTrade.Orders)
                                    {
                                        if (!o.SellerRate)
                                        {
                                            objRate.Tid = Convert.ToInt64(tid);
                                            objRate.Oid = o.Oid;
                                            string    strContent = "";
                                            TradeRate obj        = null;
                                            //调用接口 新增单个评价
                                            obj = objRateDal.BuyerTradeRateOneByOne(objRate, ref strContent, sessionKey);
                                            if (obj == null)
                                            {
                                                // 调用API进行批量评价
                                                obj = objRateDal.BuyerTradeRate(objRate, ref strContent, sessionKey);
                                            }
                                            if (obj != null)
                                            {       //rating sucessfull
                                                obj.Content = strContent;
                                                obj.Nick    = objRate.SellerNick;
                                                obj.Tid     = Convert.ToInt64(tid);
                                                obj.Created = obj.Created;

                                                // 添加卖家评价
                                                //Console.WriteLine("评价卖家:" + obj.Nick + " 评价日期:" + obj.Created);
                                                DBUtil.AddRateHisWithSeller(obj, "方案二");
                                                Console.WriteLine("当前卖家:" + sellerNick + "评价时间:" + DateTime.Now.ToString());
                                            }
                                        }
                                    }
                                }
                            }
                            #endregion
                        }

                        //判断卖家是否开通交易后多长时间评价
                        if (isQiangRate == 1)
                        {
                            #region 方案三(交易后多长时间评价)

                            //检查是否到评论时间
                            TimeSpan ts = DateTime.Now - createDate;
                            //当前时间到提单的时间间隔
                            int jiange = (ts.Days * 24 * 60 * 60) + (ts.Hours * 60 * 60) + (ts.Minutes * 60) + (ts.Minutes);
                            //评价配置的时间间隔
                            int congigJiange = (Convert.ToInt32(dtAutoConfig.Rows[0]["qiangRateTimeDay"]) * 24 * 60 * 60)
                                               + (Convert.ToInt32(dtAutoConfig.Rows[0]["qiangRateTimeHour"]) * 60 * 60) + (Convert.ToInt32(dtAutoConfig.Rows[0]["qiangRateTimeFen"]) * 60);
                            if (congigJiange < jiange)
                            {
                                continue;
                            }
                            //评价开始
                            string sessionKey = DBUtil.GetSellerSessionKey(sellerNick);
                            if (!string.IsNullOrEmpty(sessionKey))
                            {
                                //检查商家设置:秒评:只检查该用户是否在黑名单
                                if (!DBUtil.CheckIsBlacklst(sellerNick, buyerNick))
                                {
                                    Trade objTrade = TBTrade.GetBuyerTrade(tid, sessionKey);
                                    if (objTrade != null && objTrade.Orders.Count > 0)
                                    {
                                        foreach (Order o in objTrade.Orders)
                                        {
                                            if (!o.SellerRate)
                                            {
                                                RateConfig objRate = new RateConfig();
                                                objRate.Tid        = Convert.ToInt64(tid);
                                                objRate.Oid        = o.Oid;
                                                objRate.Content1   = dtAutoConfig.Rows[0]["content1"].ToString();
                                                objRate.Content2   = dtAutoConfig.Rows[0]["content2"].ToString();
                                                objRate.Content3   = dtAutoConfig.Rows[0]["content3"].ToString();
                                                objRate.Result     = dtAutoConfig.Rows[0]["result"].ToString();
                                                objRate.SellerNick = sellerNick;
                                                string    strContent = "";
                                                TBRating  objRateDal = new TBRating();
                                                TradeRate obj        = null;
                                                //调用接口 新增单个评价
                                                obj = objRateDal.BuyerTradeRateOneByOne(objRate, ref strContent, sessionKey);
                                                if (obj == null)
                                                {
                                                    // 调用API进行批量评价
                                                    obj = objRateDal.BuyerTradeRate(objRate, ref strContent, sessionKey);
                                                }
                                                if (obj != null)
                                                {   //rating sucessfull
                                                    obj.Content = strContent;
                                                    obj.Nick    = objRate.SellerNick;
                                                    obj.Tid     = Convert.ToInt64(tid);
                                                    obj.Created = obj.Created;

                                                    // 添加卖家评价:秒评
                                                    //Console.WriteLine("评价卖家:" + obj.Nick + " 评价日期:" + obj.Created);
                                                    DBUtil.AddRateHisWithSeller(obj, "方案三");

                                                    Console.WriteLine("当前卖家:" + sellerNick + "评价时间:" + DateTime.Now.ToString());
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                            #endregion
                        }
                        //自动删除数据
                        DBUtil.DeleteValidTradeForMiaoRate(tid);
                    }
                    busySend = false;
                }
            }
            catch (Exception ex)
            {
                ExceptionReporter.WriteLog(ex, ExceptionPostion.TBApply_Data);
            }
            finally
            {
                sendMessageDoTimer.Enabled = true;
            }
        }
Beispiel #9
0
        /// <summary>
        /// 搜索评价信息[搜索评价信息,只能获取距今180天内的评价记录(只支持查询卖家给出或得到的评价)。]
        /// </summary>
        /// <param name="sessionKey"></param>
        /// <param name="tradeRatestr"></param>
        /// <returns></returns>
        internal List <TradeRate> GetTraderateList(string sessionKey, tradeRateQueryCls tradeRatestr)
        {
            List <TradeRate>     listrate = new List <TradeRate>();
            ITopClient           client   = new DefaultTopClient(StaticSystemConfig.soft.ApiURL, StaticSystemConfig.soft.AppKey, StaticSystemConfig.soft.AppSecret);
            TraderatesGetRequest req      = new TraderatesGetRequest();

            req.Fields = "tid,oid,role,nick,result,created,rated_nick,item_title,item_price,content,reply,num_iid";
            if (string.IsNullOrEmpty(tradeRatestr.RateType))
            {
                return(null);
            }
            req.RateType = tradeRatestr.RateType;
            if (string.IsNullOrEmpty(tradeRatestr.Role))
            {
                return(null);
            }
            req.Role     = tradeRatestr.Role;
            req.Result   = tradeRatestr.Result;
            req.PageNo   = tradeRatestr.PageNo;
            req.PageSize = tradeRatestr.PageSize;

            DateTime dateTime = tradeRatestr.StartDate.HasValue ? tradeRatestr.StartDate.Value : DateTime.Now.AddMonths(-1);

            req.StartDate = DateTime.Parse(dateTime.Date.ToString("yyyy-MM-dd"));
            DateTime dateTime1 = tradeRatestr.EndDate.HasValue ? tradeRatestr.EndDate.Value : DateTime.Now;

            req.EndDate = DateTime.Parse(dateTime1.Date.ToString("yyyy-MM-dd"));

            req.Tid        = tradeRatestr.Tid;
            req.UseHasNext = tradeRatestr.UseHasNext;
            req.NumIid     = tradeRatestr.NumIid;
            TraderatesGetResponse response = client.Execute(req, sessionKey);

            if (response.IsError)
            {
                return(null);
            }
            else
            {
                TradeRate tr = null;
                foreach (Top.Api.Domain.TradeRate item in response.TradeRates)
                {
                    tr            = new TradeRate();
                    tr.Content    = item.Content;
                    tr.Created    = item.Created;
                    tr.ItemPrice  = item.ItemPrice;
                    tr.ItemTitle  = item.ItemTitle;
                    tr.Nick       = item.Nick;
                    tr.NumIid     = item.NumIid;
                    tr.Oid        = item.Oid;
                    tr.RatedNick  = item.RatedNick;
                    tr.Reply      = item.Reply;
                    tr.Result     = item.Result;
                    tr.Role       = item.Role;
                    tr.Tid        = item.Tid;
                    tr.ValidScore = item.ValidScore;
                    listrate.Add(tr);
                }
            }
            return(listrate);
        }
 public static ExchangeRateWaterInformation ToRateWaterInfo(TradeRate tradeRate)
 {
     return new ExchangeRateWaterInformation
     {
         StockCode = tradeRate.PriceCode,
         Rate = tradeRate.Rate,
         Water = tradeRate.Water,
     };
 }
        public ReturnType UpdateTradeRate(TradeRate traderate)
        {
            try
            {
                using (AladingEntities alading = new AladingEntities(AppSettings.GetConnectionString()))
                {
                    /*TradeRate result = alading.TradeRate.Where(p => p.TradeRateID == traderate.TradeRateID).FirstOrDefault();*/
                    TradeRate result = alading.TradeRate.Where(p => p.TradeRateCode == traderate.TradeRateCode).FirstOrDefault();
                    if (result == null)
                    {
                        return(ReturnType.NotExisted);
                    }
                    #region   Using Attach() Function Update,Default USE;
                    alading.Attach(result);
                    alading.ApplyPropertyChanges("TradeRate", traderate);
                    #endregion

                    #region    Using All Items Replace To Update ,Default UnUse

                    /*
                     *
                     *  result.tid = traderate.tid;
                     *
                     *  result.oid = traderate.oid;
                     *
                     *  result.role = traderate.role;
                     *
                     *  result.nick = traderate.nick;
                     *
                     *  result.result = traderate.result;
                     *
                     *  result.created = traderate.created;
                     *
                     *  result.rated_nick = traderate.rated_nick;
                     *
                     *  result.item_title = traderate.item_title;
                     *
                     *  result.item_price = traderate.item_price;
                     *
                     *  result.content = traderate.content;
                     *
                     *  result.reply = traderate.reply;
                     *
                     */
                    #endregion
                    if (alading.SaveChanges() == 1)
                    {
                        return(ReturnType.Success);
                    }

                    return(ReturnType.OthersError);
                }
            }
            catch (SqlException sex)
            {
                return(ReturnType.ConnFailed);
            }
            catch (Exception ex)
            {
                return(ReturnType.OthersError);
            }
        }
 public static ReturnType UpdateTradeRate(string traderateCode, TradeRate traderate)
 {
     return(DataProviderClass.Instance().UpdateTradeRate(traderateCode, traderate));
 }
 public static ReturnType AddTradeRate(TradeRate traderate)
 {
     return(DataProviderClass.Instance().AddTradeRate(traderate));
 }