public SalesManager(BUser user, int shop_id, Permission permission) : base(user, shop_id, permission) { tradeManager = new TaobaoTradeManager(this.AccessToken, this.Shop.Mall_Type_ID); }
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); }
/// <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; }