Example #1
0
 public SalesManager(BUser user, int shop_id, Permission permission)
     : base(user, shop_id, permission)
 {
     tradeManager = new TaobaoTradeManager(this.AccessToken, this.Shop.Mall_Type_ID);
 }
Example #2
0
 public SalesManager(BUser user, Shop shop, Permission permission)
     : base(user, shop, permission)
 {
     stockManager = new StockManager(user, shop, permission);
     tradeManager = new TaobaoTradeManager(this.AccessToken, this.Shop.Mall_Type_ID);
 }
Example #3
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="startTime"></param>
        /// <param name="endTime"></param>
        /// <param name="status"></param>
        /// <returns></returns>
        private bool SyncMallTrades(int startTime, int endTime, string status,int syncType,Shop shop)
        {
            bool result = false;
            try
            {
                KuanMaiEntities db = new KuanMaiEntities();
                IOTradeManager tradeManager = null;
                Access_Token token = this.AccessToken;
                Shop desshop = this.Shop;
                if (shop != null)
                {
                    desshop = shop;
                    token = (from t in db.Access_Token
                             from u in db.User
                             where t.User_ID == u.User_ID && u.User_ID == shop.User_ID
                             select t).FirstOrDefault<Access_Token>();

                    if (token == null)
                    {
                        throw new KMJXCException("店铺 "+shop.Name+" 的授权已经过期,请使用此店铺掌柜账号登录一次系统");
                    }

                    if (IsTokenExpired(token))
                    {
                        throw new KMJXCException("店铺 " + shop.Name + " 的授权已经过期,请使用此店铺掌柜账号登录一次系统");
                    }
                }

                tradeManager = new TaobaoTradeManager(token, desshop.Mall_Type_ID);
                List<BSale> allSales = new List<BSale>();

                Sale_SyncTime syncTime = null;

                syncTime = (from sync in db.Sale_SyncTime where sync.ShopID == desshop.Shop_ID && sync.SyncType == syncType orderby sync.LastSyncTime descending select sync).FirstOrDefault<Sale_SyncTime>();
                DateTime tNow = DateTime.Now;
                long timeNow = DateTimeUtil.ConvertDateTimeToInt(tNow);
                long lastSyncModifiedTime = 0;
                lastSyncModifiedTime = DateTimeUtil.ConvertDateTimeToInt(tNow.AddDays(-1));
                if (syncTime != null)
                {
                    lastSyncModifiedTime = syncTime.LastTradeModifiedEndTime;
                }

                syncTime = new Sale_SyncTime();
                syncTime.ShopID = desshop.Shop_ID;
                syncTime.SyncUser = this.CurrentUser.ID;
                syncTime.LastSyncTime = timeNow;

                syncTime.SyncType = syncType;
                db.Sale_SyncTime.Add(syncTime);

                //0 is normal sync trade by created time, 1 is increment sync trade by modified time
                if (syncType == 0)
                {
                    syncTime.LastTradeStartEndTime = endTime + 1;
                    syncTime.LastTradeModifiedEndTime = 0;
                    DateTime? sDate = null;
                    DateTime? eDate = null;

                    if (startTime > 0)
                    {
                        sDate = DateTimeUtil.ConvertToDateTime(startTime);
                    }

                    if (endTime > 0)
                    {
                        eDate = DateTimeUtil.ConvertToDateTime(endTime);
                    }

                    allSales = tradeManager.SyncMallTrades(sDate, eDate, status);
                }
                else if (syncType == 1)
                {
                    syncTime.LastTradeStartEndTime = 0;
                    syncTime.LastTradeModifiedEndTime = timeNow + 1;
                    allSales = tradeManager.IncrementSyncMallTrades(lastSyncModifiedTime, timeNow, status);
                }

                List<BSale> sales = new List<BSale>();

                foreach (BSale s in allSales)
                {
                    List<BSale> existed = (from ss in sales where ss.Sale_ID == s.Sale_ID select ss).ToList<BSale>();
                    if (existed == null || existed.Count == 0)
                    {
                        sales.Add(s);
                    }
                }

                base.CreateActionLog(new BUserActionLog() { Shop = new BShop { ID = shop.Shop_ID }, Action = new BUserAction() { Action_ID = UserLogAction.SYNC_SHOP_TRADE }, Description = "同步商城订单到进销存,成功调用商城API," + sales.Count+" 条新的交易同步回进销存" });
                this.HandleMallTrades(sales, desshop);
                db.SaveChanges();
            }
            catch (KMJXCTaobaoException mex)
            {
                throw mex;
            }
            catch (KMJXCMallException mex)
            {
                throw mex;
            }
            catch (KMJXCException ex)
            {
                throw ex;
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return result;
        }