コード例 #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="response"></param>
        public static bool Finish(CardOrderSupplierResponse response)
        {
            try
            {
                byte continueSubmit = 0;
                if (response.OrderStatus != 2 && response.Method == 1)
                {
                    var suppInfo = SupplierFactory.GetCacheModel(response.SupplierId);
                    if (suppInfo != null)
                    {
                        if (!string.IsNullOrEmpty(suppInfo.AsynsRetCode))
                        {
                            string[] arr = suppInfo.AsynsRetCode.Split(',');
                            if (arr.Any(s => s == response.SuppErrorCode))
                            {
                                continueSubmit = 1;
                            }
                        }
                    }
                }

                int    seq = 1, continueSupp = 0;
                string cacheKey = "ReceiveSuppResult" + response.SysOrderNo + response.SupplierId.ToString();
                object flag     = HttpRuntime.Cache[cacheKey];
                if (flag == null)
                {
                    DataRow resultRow = dal2.CallbackInsert(response.SysOrderNo
                                                            , response.SupplierId
                                                            , response.OrderStatus
                                                            , response.SuppErrorCode
                                                            , response.SuppErrorMsg
                                                            , continueSubmit);

                    if (resultRow != null)
                    {
                        seq          = Convert.ToInt32(resultRow["seq"]);
                        continueSupp = Convert.ToInt32(resultRow["continueSupp"]);
                    }

                    if (continueSubmit == 1 && continueSupp > 0)
                    {
                    }
                    else
                    {
                        bool processFlag = (seq == 1) || ((seq > 1) && (response.OrderStatus == 2));

                        if (processFlag)
                        {
                            UpdateOrder(seq, response);
                        }
                    }


                    HttpRuntime.Cache.Insert(cacheKey, response.OrderStatus, null, DateTime.Now.AddSeconds(10.0), TimeSpan.Zero);
                }

                if (seq == 1)
                {
                    _notify.DoNotify(response.SysOrderNo);
                }

                Cache.WebCache.GetCacheService().RemoveObject(response.SysOrderNo);

                return(true);
            }
            catch (Exception exception)
            {
                viviLib.ExceptionHandling.ExceptionHandler.HandleException(exception);

                return(false);
            }
        }