예제 #1
0
        public OpResult Publish(int verId, short state, bool forced)
        {
            var obj = Get(verId);

            if (obj != null)
            {
                obj.VerStatus = state;
                var list = ProductPublishVerRepository.GetQuery(o => o.ProductId == obj.ProductId && o.PublishId != obj.PublishId).ToList();
                list.Where(o => o.VerStatus == obj.VerStatus).Each(o => o.Status = 2);
                if (state == 1)//测试
                {
                    obj.PublishDT  = DateTime.Now;
                    obj.PublishUID = CurrentUser.UID;
                    obj.Status     = 1;
                    obj.Forced     = forced;
                    var source = list.OrderByDescending(o => o.VerCode).FirstOrDefault(o => o.VerCode > 0);
                    if (source == null)
                    {
                        obj.VerCode = 1;
                    }
                    else
                    {
                        obj.VerCode = source.VerCode + 0.1m;
                    }
                }
                obj.CompanyCount = CompanyAuthorizeRepository.GetQuery(o => o.OpenVersionId == obj.ProductId && o.Status == 1).Count();
                ProductPublishSqlRepository.SaveChanges();
                return(OpResult.Success());
            }
            return(OpResult.Fail());
        }
예제 #2
0
        public List <Models.ProductDataSqlModel> DataList(int verId)
        {
            var query     = ProductPublishSqlRepository.GetQuery(o => o.PublishId == verId);
            var queryVer  = ProductPublishVerRepository.GetQuery(o => o.PublishId == verId);
            var queryMenu = ProductMenuLimitRepository.GetQuery();
            var q         = from x in query
                            join y in queryVer on x.PublishId equals y.PublishId
                            orderby x.RunSort
                            select new Models.ProductDataSqlModel()
            {
                Id      = x.Id,
                MenuId  = x.MenuId,
                RunSort = x.RunSort,
                RunSql  = x.RunSql,
                Index   = x.PublishId,
                Title   = queryMenu.Where(o => o.ModuleId == y.MenuModuleId && o.MenuId == x.MenuId).Select(o => o.Title).FirstOrDefault()
            };

            var ms    = q.ToList();
            var menus = new List <Models.ProductDataSqlModel>();
            int i     = 0;

            foreach (var m in ms)
            {
                m.DataId  = m.Index.ToString();
                m.SqlMore = m.RunSql.TrimMore(200);
                m.Count   = ms.Count;
                m.Index   = i;
                i++;
                menus.Add(m);
            }
            return(menus);
        }
예제 #3
0
        private IQueryable <Entity.ProductPublishVer> GetPublishData(int cid, int code)
        {
            var queryPublish = ProductPublishVerRepository.GetQuery(o => o.ProductId == code && o.Status == 1 && o.VerStatus > 0);
            var queryLog     = ProductUpdateLogRepository.GetQuery(o => o.CID == cid && o.Status == 0);
            var query        = from x in queryPublish
                               where x.PublishId == queryPublish.Max(o => (int?)o.PublishId) && !queryLog.Any(o => o.PublishId == x.PublishId)
                               select x;

            return(query);
        }
예제 #4
0
        public List <Entity.ProductVer> GetProductVerEnables()
        {
            var queryProduct = ProductVerRepository.GetQuery();
            var queryModel   = ProductPublishVerRepository.GetQuery();
            var query        = from x in queryProduct
                               where queryModel.Any(o => o.ProductId == x.ProductId && o.VerStatus == 2 && o.Status == 1) &&
                               x.Status == 1
                               select x;

            return(query.ToList());
        }
예제 #5
0
        public OpResult Deletes(int[] ids)
        {
            var list = ProductPublishVerRepository.GetQuery(o => ids.Contains(o.Id)).Include(o => o.ProductPublishSqls).ToList();

            if (list.Any(o => o.VerStatus > 0))
            {
                return(OpResult.Fail("该状态不允许删除"));
            }
            ProductPublishSqlRepository.RemoveRange(list.SelectMany(o => o.ProductPublishSqls).ToList(), false);
            ProductPublishVerRepository.RemoveRange(list);
            return(OpResult.Success());
        }
예제 #6
0
 public OpResult SaveOrUpdate(Entity.ProductPublishVer obj)
 {
     if (obj.Id == 0)
     {
         obj.PublishId = ProductPublishVerRepository.GetMaxInt(o => (int?)o.PublishId);
         obj.CreateDT  = DateTime.Now;
         obj.UpdateDT  = obj.CreateDT;
         obj.UpdateUID = CurrentUser.UID;
         obj.CreateUID = obj.UpdateUID;
         ProductPublishVerRepository.Add(obj, false);
     }
     else
     {
         var product = ProductPublishVerRepository.Find(o => o.Id == obj.Id);
         obj.ToCopyProperty(product, new List <string>()
         {
             "CreateDT", "CreateUID", "PublishId"
         });
         product.UpdateUID = CurrentUser.UID;
         product.UpdateDT  = DateTime.Now;
     }
     ProductPublishVerRepository.SaveChanges();
     return(OpResult.Success());
 }
예제 #7
0
        public IEnumerable <dynamic> GetPageList(System.Collections.Specialized.NameValueCollection nvl, out int recordCount)
        {
            var query        = ProductPublishVerRepository.GetQuery();
            var queryProduct = ProductVerRepository.GetQuery();
            var queryUser    = UserRepository.GetQuery();
            var productId    = nvl["productId"].ToType <int?>();
            var state        = nvl["state"];
            var verstate     = nvl["verstate"];
            var q            = from x in query
                               join y in queryProduct on x.ProductId equals y.ProductId
                               select new
            {
                x.Id,
                x.CreateDT,
                x.ProductId,
                x.Status,
                x.VerStatus,
                x,
                UpdateCount = x.ProductUpdateLogs.Count(o => o.Status == 0),
                ModuleVer   = x.ProductModuleVer == null?0:x.ProductModuleVer.VerCode,
                RoleVer     = x.ProductRoleVer == null ? 0 : x.ProductRoleVer.VerCode,
                DictVer     = x.ProductDictionaryVer == null ? 0 : x.ProductDictionaryVer.VerCode,
                DataVer     = x.ProductDataVer == null ? 0 : x.ProductDataVer.VerCode,
                y.SysName,
                Updater   = queryUser.Where(o => o.UserId == x.UpdateUID).Select(o => o.FullName).FirstOrDefault(),
                Publisher = queryUser.Where(o => o.UserId == x.PublishUID).Select(o => o.FullName).FirstOrDefault()
            };

            if (productId.HasValue)
            {
                q = q.Where(o => o.ProductId == productId);
            }
            if (!state.IsNullOrEmpty())
            {
                var st = state.Split(',').Select(o => short.Parse(o)).ToList();
                q = q.Where(o => st.Contains(o.Status));
            }
            if (!verstate.IsNullOrEmpty())
            {
                var st = verstate.Split(',').Select(o => short.Parse(o)).ToList();
                q = q.Where(o => st.Contains(o.VerStatus));
            }
            recordCount = q.Count();
            return(q.ToPageList().Select(x => new{
                x.Id,
                x.x.PublishId,
                x.ProductId,
                x.SysName,
                x.x.VerCode,
                x.CreateDT,
                x.x.CreateUID,
                x.Status,
                x.VerStatus,
                x.x.UpdateDT,
                x.x.PublishDT,
                x.x.StatusTitle,
                x.x.VerStatusTitle,
                x.UpdateCount,
                x.ModuleVer,
                x.RoleVer,
                x.DictVer,
                x.DataVer,
                x.x.CompanyCount,
                x.x.IsRunSql,
                x.x.Forced,
                x.Updater,
                x.Publisher
            }));
        }
예제 #8
0
 public Entity.ProductPublishVer Get(int verId)
 {
     return(ProductPublishVerRepository.GetQuery(o => o.PublishId == verId).Include(o => o.ProductPublishSqls).FirstOrDefault());
 }
예제 #9
0
 public OpResult SaveVer(Entity.ProductPublishVer obj)
 {
     if (ProductPublishVerRepository.IsExists(o => o.ProductId == obj.ProductId && o.VerStatus == 0 && o.Id != obj.Id))
     {
         return(OpResult.Fail("已存在未发布的版本"));
     }
     if (obj.HasModelId == "1")
     {
         if (obj.ModuleId.IsNullOrEmpty())
         {
             var model = ProductModuleVerRepository.GetOfficialLast(obj.ProductId);
             if (model == null)
             {
                 return(OpResult.Fail("功能升级未发布正式版!"));
             }
             obj.ModuleId = model.ModuleId;
         }
     }
     else
     {
         obj.ModuleId = "";
     }
     if (obj.HasRoleId == "1")
     {
         if (obj.RoleId.IsNullOrEmpty())
         {
             var model = ProductRoleVerRepository.GetOfficialLast(obj.ProductId);
             if (model == null)
             {
                 return(OpResult.Fail("角色升级未发布正式版!"));
             }
             obj.RoleId = model.RoleVerId;
         }
     }
     else
     {
         obj.RoleId = "";
     }
     if (obj.HasDictId == "1")
     {
         if (obj.DictId.IsNullOrEmpty())
         {
             var model = ProductDictionaryVerRepository.GetOfficialLast(obj.ProductId);
             if (model == null)
             {
                 return(OpResult.Fail("字典升级未发布正式版!"));
             }
             obj.DictId = model.DictId;
         }
     }
     else
     {
         obj.DictId = "";
     }
     if (obj.HasDataId == "1")
     {
         if (obj.DataId.IsNullOrEmpty())
         {
             var model = ProductDataVerRepository.GetOfficialLast(obj.ProductId);
             if (model == null)
             {
                 return(OpResult.Fail("初始数据升级未发布正式版!"));
             }
             obj.DataId = model.DataId;
         }
     }
     else
     {
         obj.DataId = "";
     }
     return(SaveOrUpdate(obj));
 }