From bf1121f24b1c3c045903bc4474f9b0b2dec60420 Mon Sep 17 00:00:00 2001 From: yubaolee Date: Wed, 14 Sep 2016 16:11:46 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E6=B5=81=E7=A8=8B=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- OpenAuth.App/OpenAuth.App.csproj | 1 + OpenAuth.App/WorkflowSchemasManagerApp.cs | 37 +++++ .../Interface/IWorkflowSchemeRepository.cs | 12 ++ OpenAuth.Domain/OpenAuth.Domain.csproj | 2 + OpenAuth.Domain/WorkflowScheme.cs | 36 +++++ .../BllScripts/workflowSchemaManager.js | 78 ++++++++++ .../Controllers/WorkflowSchemasController.cs | 45 ++++++ OpenAuth.Mvc/OpenAuth.Mvc.csproj | 3 + OpenAuth.Mvc/Views/Designer/Index.cshtml | 89 +++++------- OpenAuth.Mvc/Views/Home/MenuHeader.cshtml | 2 +- .../Views/WorkflowSchemas/Index.cshtml | 16 +++ OpenAuth.Mvc/Web.config | 3 +- .../Models/OpenAuthDBContext.cs | 4 + .../OpenAuth.Repository.csproj | 4 + .../Workflow/Mapping/WorkflowSchemeMap.cs | 37 +++++ .../Workflow/WorkflowBaseRepository.cs | 134 ++++++++++++++++++ .../Workflow/WorkflowContext.cs | 41 ++++++ .../Workflow/WorkflowSchemeRepository.cs | 11 ++ OpenAuth.WebTest/Views/Home/Index.cshtml | 2 +- 19 files changed, 497 insertions(+), 60 deletions(-) create mode 100644 OpenAuth.App/WorkflowSchemasManagerApp.cs create mode 100644 OpenAuth.Domain/Interface/IWorkflowSchemeRepository.cs create mode 100644 OpenAuth.Domain/WorkflowScheme.cs create mode 100644 OpenAuth.Mvc/BllScripts/workflowSchemaManager.js create mode 100644 OpenAuth.Mvc/Controllers/WorkflowSchemasController.cs create mode 100644 OpenAuth.Mvc/Views/WorkflowSchemas/Index.cshtml create mode 100644 OpenAuth.Repository/Workflow/Mapping/WorkflowSchemeMap.cs create mode 100644 OpenAuth.Repository/Workflow/WorkflowBaseRepository.cs create mode 100644 OpenAuth.Repository/Workflow/WorkflowContext.cs create mode 100644 OpenAuth.Repository/Workflow/WorkflowSchemeRepository.cs diff --git a/OpenAuth.App/OpenAuth.App.csproj b/OpenAuth.App/OpenAuth.App.csproj index 823ca174..b3133b17 100644 --- a/OpenAuth.App/OpenAuth.App.csproj +++ b/OpenAuth.App/OpenAuth.App.csproj @@ -113,6 +113,7 @@ + diff --git a/OpenAuth.App/WorkflowSchemasManagerApp.cs b/OpenAuth.App/WorkflowSchemasManagerApp.cs new file mode 100644 index 00000000..d040a0dc --- /dev/null +++ b/OpenAuth.App/WorkflowSchemasManagerApp.cs @@ -0,0 +1,37 @@ +using System.Linq; +using Infrastructure; +using OpenAuth.App.ViewModel; +using OpenAuth.Domain; +using OpenAuth.Domain.Interface; + +namespace OpenAuth.App +{ + /// + /// 工作流模板 + /// + public class WorkflowSchemasManagerApp + { + private IWorkflowSchemeRepository _repository; + + public WorkflowSchemasManagerApp(IWorkflowSchemeRepository repository) + { + _repository = repository; + } + public GridData Load(int pageCurrent, int pageSize) + { + var result = new GridData + { + pageCurrent = pageCurrent, + total = _repository.GetCount(), + list = _repository.Find(pageCurrent, pageSize, "Code", null).ToList() + }; + + return result; + } + + public void Del(string code) + { + _repository.Delete(u =>u.Code == code); + } + } +} \ No newline at end of file diff --git a/OpenAuth.Domain/Interface/IWorkflowSchemeRepository.cs b/OpenAuth.Domain/Interface/IWorkflowSchemeRepository.cs new file mode 100644 index 00000000..cc64af3d --- /dev/null +++ b/OpenAuth.Domain/Interface/IWorkflowSchemeRepository.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +namespace OpenAuth.Domain.Interface +{ + public interface IWorkflowSchemeRepository : IRepository + { + + + } +} \ No newline at end of file diff --git a/OpenAuth.Domain/OpenAuth.Domain.csproj b/OpenAuth.Domain/OpenAuth.Domain.csproj index 4cfdf300..f3dbdb3f 100644 --- a/OpenAuth.Domain/OpenAuth.Domain.csproj +++ b/OpenAuth.Domain/OpenAuth.Domain.csproj @@ -49,6 +49,7 @@ + @@ -73,6 +74,7 @@ + - diff --git a/OpenAuth.Repository/Models/OpenAuthDBContext.cs b/OpenAuth.Repository/Models/OpenAuthDBContext.cs index aac61961..ae003cc3 100644 --- a/OpenAuth.Repository/Models/OpenAuthDBContext.cs +++ b/OpenAuth.Repository/Models/OpenAuthDBContext.cs @@ -10,6 +10,7 @@ using System.Data.Entity; using OpenAuth.Domain; using OpenAuth.Repository.Models.Mapping; +using OpenAuth.Repository.Workflow.Mapping; namespace OpenAuth.Repository.Models { @@ -42,6 +43,8 @@ namespace OpenAuth.Repository.Models public DbSet ApplyTransitionHistories { get; set; } + public System.Data.Entity.DbSet WorkflowSchemes { get; set; } + protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Configurations.Add(new CategoryMap()); @@ -57,6 +60,7 @@ namespace OpenAuth.Repository.Models modelBuilder.Configurations.Add(new StockMap()); modelBuilder.Configurations.Add(new UserMap()); modelBuilder.Configurations.Add(new ApplyTransitionHistoryMap()); + modelBuilder.Configurations.Add(new WorkflowSchemeMap()); } } diff --git a/OpenAuth.Repository/OpenAuth.Repository.csproj b/OpenAuth.Repository/OpenAuth.Repository.csproj index 29f5b846..e4e9438d 100644 --- a/OpenAuth.Repository/OpenAuth.Repository.csproj +++ b/OpenAuth.Repository/OpenAuth.Repository.csproj @@ -57,6 +57,7 @@ + @@ -80,6 +81,9 @@ + + + diff --git a/OpenAuth.Repository/Workflow/Mapping/WorkflowSchemeMap.cs b/OpenAuth.Repository/Workflow/Mapping/WorkflowSchemeMap.cs new file mode 100644 index 00000000..49587103 --- /dev/null +++ b/OpenAuth.Repository/Workflow/Mapping/WorkflowSchemeMap.cs @@ -0,0 +1,37 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a CodeSmith Template. +// +// DO NOT MODIFY contents of this file. Changes to this +// file will be lost if the code is regenerated. +// +//------------------------------------------------------------------------------ + +using OpenAuth.Domain; + +namespace OpenAuth.Repository.Workflow.Mapping +{ + public partial class WorkflowSchemeMap + : System.Data.Entity.ModelConfiguration.EntityTypeConfiguration + { + public WorkflowSchemeMap() + { + // table + ToTable("WorkflowScheme", "dbo"); + + // keys + HasKey(t => t.Code); + + // Properties + Property(t => t.Code) + .HasColumnName("Code") + .HasMaxLength(256) + .IsRequired(); + Property(t => t.Scheme) + .HasColumnName("Scheme") + .IsRequired(); + + // Relationships + } + } +} diff --git a/OpenAuth.Repository/Workflow/WorkflowBaseRepository.cs b/OpenAuth.Repository/Workflow/WorkflowBaseRepository.cs new file mode 100644 index 00000000..a4f15f81 --- /dev/null +++ b/OpenAuth.Repository/Workflow/WorkflowBaseRepository.cs @@ -0,0 +1,134 @@ +using System; +using System.Data.Entity; +using System.Data.Entity.Migrations; +using System.Linq; +using System.Linq.Expressions; +using EntityFramework.Extensions; +using Infrastructure; +using OpenAuth.Domain.Interface; + +namespace OpenAuth.Repository.Workflow +{ + public class WorkflowBaseRepository :IRepository where T:class + { + protected WorkflowContext Context = new WorkflowContext(); + + + /// + /// 根据过滤条件,获取记录 + /// + /// The exp. + public IQueryable Find(Expression> exp = null) + { + return Filter(exp); + } + + public bool IsExist(Expression> exp) + { + return Context.Set().Any(exp); + } + + /// + /// 查找单个 + /// + public T FindSingle(Expression> exp) + { + return Context.Set().AsNoTracking().FirstOrDefault(exp); + } + + /// + /// 得到分页记录 + /// + /// The pageindex. + /// The pagesize. + /// 排序,格式如:"Id"/"Id descending" + public IQueryable Find(int pageindex, int pagesize, string orderby = "", Expression> exp = null) + { + if (pageindex < 1) pageindex = 1; + if (string.IsNullOrEmpty(orderby)) + orderby = "Id descending"; + + return Filter(exp).OrderBy(orderby).Skip(pagesize * (pageindex - 1)).Take(pagesize); + } + + /// + /// 根据过滤条件获取记录数 + /// + public int GetCount(Expression> exp = null) + { + return Filter(exp).Count(); + } + + public void Add(T entity) + { + Context.Set().Add(entity); + Save(); + } + + /// + /// 批量添加 + /// + /// The entities. + public void BatchAdd(T[] entities) + { + Context.Set().AddRange(entities); + Save(); + } + + public void Update(T entity) + { + var entry = this.Context.Entry(entity); + //todo:如果状态没有任何更改,会报错 + entry.State = EntityState.Modified; + + Save(); + } + + public void Delete(T entity) + { + Context.Set().Remove(entity); + Save(); + } + + /// + /// 按指定id更新实体,会更新整个实体 + /// + /// The identity exp. + /// The entity. + public void Update(Expression> identityExp, T entity) + { + Context.Set().AddOrUpdate(identityExp, entity); + Save(); + } + + /// + /// 实现按需要只更新部分更新 + /// 如:Update(u =>u.Id==1,u =>new User{Name="ok"}); + /// + /// The where. + /// The entity. + public void Update(Expression> where, Expression> entity) + { + Context.Set().Where(where).Update(entity); + } + + public virtual void Delete(Expression> exp) + { + Context.Set().Where(exp).Delete(); + } + + public void Save() + { + Context.SaveChanges(); + } + + private IQueryable Filter(Expression> exp) + { + var dbSet = Context.Set().AsQueryable(); + if (exp != null) + dbSet = dbSet.Where(exp); + return dbSet; + } + + } +} diff --git a/OpenAuth.Repository/Workflow/WorkflowContext.cs b/OpenAuth.Repository/Workflow/WorkflowContext.cs new file mode 100644 index 00000000..3dcfc01a --- /dev/null +++ b/OpenAuth.Repository/Workflow/WorkflowContext.cs @@ -0,0 +1,41 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a CodeSmith Template. +// +// DO NOT MODIFY contents of this file. Changes to this +// file will be lost if the code is regenerated. +// +//------------------------------------------------------------------------------ + +using System.Data.Entity; +using OpenAuth.Domain; +using OpenAuth.Repository.Models; +using OpenAuth.Repository.Models.Mapping; +using OpenAuth.Repository.Workflow.Mapping; + +namespace OpenAuth.Repository.Workflow +{ + public partial class WorkflowContext: DbContext + { + static WorkflowContext() + { + Database.SetInitializer< OpenAuthDBContext>(null); + } + public WorkflowContext() + :base("Name=WorkFlow") + { } + + public WorkflowContext(string nameOrConnectionString) + : base(nameOrConnectionString) + { } + + + public System.Data.Entity.DbSet WorkflowSchemes { get; set; } + + protected override void OnModelCreating(DbModelBuilder modelBuilder) + { + modelBuilder.Configurations.Add(new WorkflowSchemeMap()); + + } + } +} \ No newline at end of file diff --git a/OpenAuth.Repository/Workflow/WorkflowSchemeRepository.cs b/OpenAuth.Repository/Workflow/WorkflowSchemeRepository.cs new file mode 100644 index 00000000..9dd8ad99 --- /dev/null +++ b/OpenAuth.Repository/Workflow/WorkflowSchemeRepository.cs @@ -0,0 +1,11 @@ +using OpenAuth.Domain; +using OpenAuth.Domain.Interface; + +namespace OpenAuth.Repository.Workflow +{ + public class WorkflowSchemeRepository:WorkflowBaseRepository,IWorkflowSchemeRepository + { + + + } +} diff --git a/OpenAuth.WebTest/Views/Home/Index.cshtml b/OpenAuth.WebTest/Views/Home/Index.cshtml index e031d14f..6b94ecbf 100644 --- a/OpenAuth.WebTest/Views/Home/Index.cshtml +++ b/OpenAuth.WebTest/Views/Home/Index.cshtml @@ -32,7 +32,7 @@ {

可访问的机构

    - @foreach (var org in ViewBag.CurrentUser.AccessedOrgs) + @foreach (var org in ViewBag.CurrentUser.Orgs) {
  • @org.Name
  • }