Beispiel #1
0
        /// <summary>
        /// 获取指定商品的所有今日优惠信息(部分代码被注释,现在取db数据,临时方案)
        /// </summary>
        /// <param name="appId"></param>
        /// <param name="commodityId"></param>
        /// <returns></returns>
        public static List <TodayPromotionDTO> GetListDTOByCommodityIdFromCache(Guid appId, Guid commodityId)
        {
            var now     = DateTime.Now;
            var result1 = TodayPromotion.ObjectSet().Where(c => c.AppId == appId && c.CommodityId == commodityId && c.StartTime < now && c.EndTime >= now).ToList();

            if (result1.Any())
            {
                return(result1.Select(c => c.ToEntityData()).ToList());
            }
            return(null);

            List <TodayPromotionDTO> result = GlobalCacheWrapper.GetData("G_CommodityPromotion:" + appId, commodityId.ToString(), CacheTypeEnum.redisSS, "BTPCache") as List <TodayPromotionDTO>;

            if (result == null || !result.Any())
            {
                result = new List <TodayPromotionDTO>();
                var dbEntities = ObjectSet().Where(c => c.AppId == appId && c.CommodityId == commodityId).ToList();
                if (dbEntities.Any())
                {
                    result.AddRange(dbEntities.Select(todayPromotion => todayPromotion.ToEntityData()));
                }
                return(result);
            }
            return(result);
        }
Beispiel #2
0
 /// <summary>
 /// 批量删除缓存
 /// </summary>
 /// <param name="appId">应用Id</param>
 /// <param name="list">列表</param>
 public static void RemoveCaches(Guid appId, List <TodayPromotionDTO> list)
 {
     if (list != null && list.Any())
     {
         Dictionary <Guid, List <TodayPromotionDTO> > dict = new Dictionary <Guid, List <TodayPromotionDTO> >();
         foreach (var todayPromotionDto in list)
         {
             if (!dict.ContainsKey(todayPromotionDto.CommodityId))
             {
                 dict.Add(todayPromotionDto.CommodityId, new List <TodayPromotionDTO>());
             }
             dict[todayPromotionDto.CommodityId].Add(todayPromotionDto);
         }
         foreach (var kv in dict)
         {
             var todayPromotions =
                 GlobalCacheWrapper.GetData("G_CommodityPromotion:" + appId, kv.Key.ToString(),
                                            CacheTypeEnum.redisSS,
                                            "BTPCache") as List <TodayPromotionDTO>;
             if (todayPromotions == null || !todayPromotions.Any())
             {
                 continue;
             }
             todayPromotions.RemoveAll(c => dict[kv.Key].Select(m => m.Id).Contains(c.Id));
             GlobalCacheWrapper.Add("G_CommodityPromotion:" + appId, kv.Key.ToString(), todayPromotions, CacheTypeEnum.redisSS, "BTPCache");
         }
     }
 }
Beispiel #3
0
 /// <summary>
 /// 增加商品缓存
 /// </summary>
 /// <param name="item"></param>
 public static void AddAppCommondityDTOCache(CommodityDTO item)
 {
     if (item != null && !item.IsDel && item.State < 2)
     {
         //   GlobalCacheWrapper.Add("G_Commodity:" + item.AppId, item.Id.ToString(), item, CacheTypeEnum.redisSS, "BTPCache");
         GlobalCacheWrapper.Add("G_CommodityDetail", item.Id.ToString(), item, CacheTypeEnum.redisSS, "BTPCache");
     }
 }
Beispiel #4
0
 /// <summary>
 /// 商品列表增加缓存(目前只加载app默认列表缓存,缓存当天有效)
 /// </summary>
 /// <param name="appId">应用Id</param>
 /// <param name="list">商品列表</param>
 /// <param name="pageIndex">页码(未启用)</param>
 /// <param name="pageSize">每页数量(未启用)</param>
 public static void AddAppListCache(Guid appId, List <Commodity> list, int pageIndex, int pageSize)
 {
     if (pageIndex == 1 && pageSize == 10 && list != null && list.Any())
     {
         List <CommodityDTO> newList = list.Select(c => c.ToEntityData()).ToList();
         GlobalCacheWrapper.AddCache("G_CommodityList:" + appId, newList, DateTime.Today.AddDays(1).AddMilliseconds(-1), "BTPCache", CacheTypeEnum.redisSS);
     }
 }
Beispiel #5
0
        /// <summary>
        /// 删除缓存
        /// </summary>
        private void RefreshCacheRemove()
        {
            //商品详情
            //GlobalCacheWrapper.Remove("G_Commodity:" + this.AppId, this.Id.ToString(), CacheTypeEnum.redisSS, "BTPCache");
            GlobalCacheWrapper.Remove("G_CommodityDetail", Id.ToString(), CacheTypeEnum.redisSS, "BTPCache");

            //商品列表
            GlobalCacheWrapper.RemoveCache("G_CommodityList:" + this.AppId, "BTPCache", CacheTypeEnum.redisSS);
        }
Beispiel #6
0
        public ResultDTO AddAPPManageExt(Jinher.AMP.BTP.Deploy.CustomDTO.APPManageDTO AppManageDTO)
        {
            ResultDTO      result         = new ResultDTO();
            ContextSession contextSession = ContextFactory.CurrentThreadContext;

            try
            {
                //检查添加是否存在
                var query = APPManage.ObjectSet().Where(q => q.AppId == AppManageDTO.AppId).FirstOrDefault();

                if (query != null)
                {
                    result.ResultCode = 1;
                    result.Message    = "此应用已经存在";
                    return(result);
                }
                else
                {
                    APPManage appManage = new APPManage();
                    appManage.Id         = AppManageDTO.Id;
                    appManage.AppId      = AppManageDTO.AppId;
                    appManage.AppName    = AppManageDTO.AppName;
                    appManage.Remark     = AppManageDTO.Remark;
                    appManage.SubTime    = AppManageDTO.SubTime;
                    appManage.SubId      = AppManageDTO.SubId;
                    appManage.ModifiedOn = AppManageDTO.ModifiedOn;
                    appManage.ModifiedId = AppManageDTO.ModifiedId;

                    appManage.EntityState = System.Data.EntityState.Added;
                    contextSession.SaveObject(appManage);
                    int num = contextSession.SaveChanges();

                    if (num > 0)
                    {
                        GlobalCacheWrapper.Remove(RedisKeyConst.AppInZPH, AppManageDTO.AppId.ToString(), CacheTypeEnum.redisSS, "BTPCache");
                        result.ResultCode = 0;
                        result.Message    = "添加成功";
                        return(result);
                    }
                    else
                    {
                        result.ResultCode = 1;
                        result.Message    = "添加失败";
                        return(result);
                    }
                }
            }
            catch (Exception ex)
            {
                LogHelper.Error(string.Format("添加AppManage异常。AppManageDTO:{0}", JsonHelper.JsonSerializer(AppManageDTO)), ex);
                result.ResultCode = 1;
                result.Message    = ex.Message;
                return(result);
            }
        }
Beispiel #7
0
        /// <summary>
        /// 删除缓存
        /// </summary>
        private void RefreshCacheRemove()
        {
            var list =
                GlobalCacheWrapper.GetData("G_CommodityPromotion:" + AppId, CommodityId.ToString(), CacheTypeEnum.redisSS,
                                           "BTPCache") as List <TodayPromotionDTO>;

            if (list == null || !list.Any())
            {
                return;
            }
            list.RemoveAll(c => c.Id == Id);
            GlobalCacheWrapper.Add("G_CommodityPromotion:" + AppId, CommodityId.ToString(), list, CacheTypeEnum.redisSS, "BTPCache");
        }
Beispiel #8
0
        /// <summary>
        /// 向商品详情缓存中增加Cache
        /// </summary>
        private void ResfreshCacheAdd()
        {
            if (!IsDel && State < 2)
            {
                //商品详情
                //GlobalCacheWrapper.Add("G_Commodity:" + this.AppId, this.Id.ToString(), this.ToEntityData(), CacheTypeEnum.redisSS, "BTPCache");

                GlobalCacheWrapper.Add("G_CommodityDetail", Id.ToString(), this.ToEntityData(), CacheTypeEnum.redisSS, "BTPCache");

                //商品列表
                GlobalCacheWrapper.RemoveCache("G_CommodityList:" + this.AppId, "BTPCache", CacheTypeEnum.redisSS);
            }
        }
Beispiel #9
0
        /// <summary>
        /// 向商品详情缓存中增加Cache
        /// </summary>
        private void ResfreshCacheAdd()
        {
            if (StartTime >= DateTime.Today.AddDays(1) || EndTime <= DateTime.Today || StartTime >= EndTime)
            {
                return;
            }
            var list =
                GlobalCacheWrapper.GetData("G_CommodityPromotion:" + AppId, CommodityId.ToString(), CacheTypeEnum.redisSS,
                                           "BTPCache") as List <TodayPromotionDTO> ?? new List <TodayPromotionDTO>();

            list.Add(ToEntityData());
            GlobalCacheWrapper.Add("G_CommodityPromotion:" + AppId, CommodityId.ToString(), list, CacheTypeEnum.redisSS, "BTPCache");
        }
Beispiel #10
0
        /// <summary>
        /// 添加指定app的优惠活动缓存
        /// </summary>
        /// <param name="appId"></param>
        /// <param name="list"></param>
        public static void AddAppDTOCache(Guid appId, List <TodayPromotionDTO> list)
        {
            if (appId != Guid.Empty && list != null && list.Any())
            {
                var dict = list.GroupBy(
                    a => a.CommodityId,
                    (key, group) => new { comId = key, proList = group }).ToDictionary(a => a.comId, a => a.proList);

                foreach (var kv in dict)
                {
                    //LogHelper.Error(string.Format("今日优惠缓存,appId:{0}  ,key:{1}    , value:{2}", appId.ToString(), kv.Key.ToString(), JsonHelper.JsonSerializer(kv.Value.ToList())));
                    GlobalCacheWrapper.Add("G_CommodityPromotion:" + appId, kv.Key.ToString(), kv.Value.ToList(), CacheTypeEnum.redisSS, "BTPCache");
                }
            }
        }
Beispiel #11
0
        /// <summary>
        /// 更新缓存
        /// </summary>
        private void RefreshCacheUpdate()
        {
            if (!IsDel && State < 2)
            {
                //商品详情
                //GlobalCacheWrapper.Add("G_Commodity:" + AppId, Id.ToString(), ToEntityData(), CacheTypeEnum.redisSS, "BTPCache");
                GlobalCacheWrapper.Add("G_CommodityDetail", Id.ToString(), ToEntityData(), CacheTypeEnum.redisSS, "BTPCache");
                //商品列表
                var commodityCache = GlobalCacheWrapper.GetDataCache("G_CommodityList:" + AppId, "BTPCache", CacheTypeEnum.redisSS) as List <CommodityDTO>;

                //商品列表
                GlobalCacheWrapper.RemoveCache("G_CommodityList:" + this.AppId, "BTPCache", CacheTypeEnum.redisSS);
                return;
            }
            RefreshCacheRemove();
        }
Beispiel #12
0
        public ResultDTO DelAPPManageExt(Guid Id)
        {
            ResultDTO      result         = new ResultDTO();
            ContextSession contextSession = ContextFactory.CurrentThreadContext;

            try
            {
                //检查添加是否存在
                var query = APPManage.ObjectSet().Where(q => q.Id == Id).FirstOrDefault();

                if (query == null)
                {
                    result.ResultCode = 1;
                    result.Message    = "不存在删除的记录";
                    return(result);
                }
                else
                {
                    query.EntityState = System.Data.EntityState.Deleted;
                    contextSession.SaveObject(query);
                    int num = contextSession.SaveChanges();

                    if (num > 0)
                    {
                        GlobalCacheWrapper.Remove(RedisKeyConst.AppInZPH, query.AppId.ToString(), CacheTypeEnum.redisSS, "BTPCache");
                        result.ResultCode = 0;
                        result.Message    = "删除成功";
                        return(result);
                    }
                    else
                    {
                        result.ResultCode = 1;
                        result.Message    = "删除失败";
                        return(result);
                    }
                }
            }
            catch (Exception ex)
            {
                LogHelper.Error(string.Format("删除AppManage异常。。Id:{0}", Id), ex);
                result.ResultCode = 1;
                result.Message    = ex.Message;
                return(result);
            }
        }
Beispiel #13
0
        public static Dictionary <Guid, List <TodayPromotionDTO> > GetDictDTOByAppIdFromCache(Guid appId)
        {
            var dict = GlobalCacheWrapper.GetAllData <List <TodayPromotionDTO> >("G_CommodityPromotion:" + appId, CacheTypeEnum.redisSS, "BTPCache");
            Dictionary <Guid, List <TodayPromotionDTO> > result = new Dictionary <Guid, List <TodayPromotionDTO> >();

            if (dict != null && dict.Any())
            {
                foreach (var kv in dict)
                {
                    Guid commodityId;
                    if (Guid.TryParse(kv.Key, out commodityId))
                    {
                        result.Add(commodityId, kv.Value);
                    }
                }
            }
            return(result);
        }
Beispiel #14
0
        /// <summary>
        /// 重置所有今日优惠活动缓存(每日计算时使用)
        /// </summary>
        /// <param name="dict"></param>
        public static void ResetTodayPromotionCache(Dictionary <Guid, List <TodayPromotionDTO> > dict)
        {
            var keys = GlobalCacheWrapper.GetAllKey(CacheTypeEnum.redisSS, "BTPCache");

            if (keys.Any())
            {
                foreach (var key in keys)
                {
                    if (key.StartsWith("G_CommodityPromotion:"))
                    {
                        GlobalCacheWrapper.RemoveCache(key, "BTPCache", CacheTypeEnum.redisSS);
                    }
                }
            }
            if (dict != null && dict.Any())
            {
                foreach (var app in dict)
                {
                    AddAppDTOCache(app.Key, app.Value);
                }
            }
        }
Beispiel #15
0
 /// <summary>
 /// 从缓存中取得商品信息实体
 /// </summary>
 /// <param name="appId">应用Id(此参数无用,以商品Id为准)</param>
 /// <param name="id">商品Id</param>
 /// <returns></returns>
 public static CommodityDTO GetDTOFromCache(Guid appId, Guid id)
 {
     //return GlobalCacheWrapper.GetData("G_Commodity:" + appId, id.ToString(), CacheTypeEnum.redisSS, "BTPCache") as CommodityDTO;
     return(GlobalCacheWrapper.GetData("G_CommodityDetail", id.ToString(), CacheTypeEnum.redisSS, "BTPCache") as CommodityDTO);
 }
Beispiel #16
0
        public ResultDTO UpdateAPPManageExt(Jinher.AMP.BTP.Deploy.CustomDTO.APPManageDTO AppManageDTO)
        {
            ResultDTO      result         = new ResultDTO();
            ContextSession contextSession = ContextFactory.CurrentThreadContext;
            //原来的appid
            string oldAppId = string.Empty;

            try
            {
                //检查添加是否存在
                var query = APPManage.ObjectSet().Where(q => q.Id != AppManageDTO.Id && q.AppId == AppManageDTO.AppId).FirstOrDefault();

                if (query != null)
                {
                    result.ResultCode = 1;
                    result.Message    = "此应用已经存在";
                    return(result);
                }


                var appManage = APPManage.ObjectSet().Where(q => q.Id == AppManageDTO.Id).FirstOrDefault();
                oldAppId = appManage.AppId.ToString();


                if (appManage != null)
                {
                    appManage.Id         = AppManageDTO.Id;
                    appManage.AppId      = AppManageDTO.AppId;
                    appManage.AppName    = AppManageDTO.AppName;
                    appManage.Remark     = AppManageDTO.Remark;
                    appManage.SubTime    = AppManageDTO.SubTime;
                    appManage.SubId      = ContextDTO.LoginUserID;
                    appManage.ModifiedOn = AppManageDTO.ModifiedOn;
                    appManage.ModifiedId = AppManageDTO.ModifiedId;

                    appManage.EntityState = System.Data.EntityState.Modified;
                    contextSession.SaveObject(appManage);
                    int num = contextSession.SaveChanges();

                    if (num > 0)
                    {
                        //如果没有修改appid
                        if (oldAppId == AppManageDTO.AppId.ToString())
                        {
                            GlobalCacheWrapper.Remove(RedisKeyConst.AppInZPH, AppManageDTO.AppId.ToString(), CacheTypeEnum.redisSS, "BTPCache");
                        }
                        //如果修改了appid,则2个都要删除
                        else
                        {
                            GlobalCacheWrapper.Remove(RedisKeyConst.AppInZPH, AppManageDTO.AppId.ToString(), CacheTypeEnum.redisSS, "BTPCache");
                            GlobalCacheWrapper.Remove(RedisKeyConst.AppInZPH, oldAppId, CacheTypeEnum.redisSS, "BTPCache");
                        }
                        result.ResultCode = 0;
                        result.Message    = "修改成功";
                        return(result);
                    }
                    else
                    {
                        result.ResultCode = 1;
                        result.Message    = "修改失败";
                        return(result);
                    }
                }
                else
                {
                    result.ResultCode = 0;
                    result.Message    = "Deled";
                    return(result);
                }
            }
            catch (Exception ex)
            {
                LogHelper.Error(string.Format("修改AppManage异常。AppManageDTO:{0}", JsonHelper.JsonSerializer(AppManageDTO)), ex);
                result.ResultCode = 1;
                result.Message    = ex.Message;
                return(result);
            }
        }
Beispiel #17
0
 /// <summary>
 /// 根据应用Id获取所有缓存商品实体
 /// </summary>
 /// <param name="appId">应用Id</param>
 /// <returns></returns>
 public static List <CommodityDTO> GetListDTOByAppIdFromCache(Guid appId)
 {
     return(GlobalCacheWrapper.GetDataCache("G_CommodityList:" + appId, "BTPCache", CacheTypeEnum.redisSS) as List <CommodityDTO>);
 }