Routine update

This commit is contained in:
yubaolee 2015-11-23 18:15:29 +08:00
parent e4f4c03389
commit e4305be038
5 changed files with 79 additions and 19 deletions

View File

@ -60,6 +60,7 @@
<Compile Include="JsonConverter.cs" />
<Compile Include="JsonHelper.cs" />
<Compile Include="LogHelper.cs" />
<Compile Include="ObjectHelper.cs" />
<Compile Include="PredicateBuilder.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Response.cs" />

View File

@ -0,0 +1,62 @@
// ***********************************************************************
// Assembly : Infrastructure
// Author : Yubao Li
// Created : 11-23-2015
//
// Last Modified By : Yubao Li
// Last Modified On : 11-23-2015
// ***********************************************************************
// <copyright file="ObjectHelper.cs" company="">
// Copyright (c) . All rights reserved.
// </copyright>
// <summary>对象COPY/初始化帮助</summary>
// ***********************************************************************
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
namespace Infrastructure
{
public static class ObjectHelper
{
public static void CopyTo<T>(this object source, T target)
where T : class,new()
{
if (source == null)
return;
if (target == null)
{
target = new T();
}
foreach (var property in target.GetType().GetProperties())
{
var propertyValue = source.GetType().GetProperty(property.Name).GetValue(source, null);
if (propertyValue != null)
{
if (propertyValue.GetType().IsClass)
{
}
target.GetType().InvokeMember(property.Name, BindingFlags.SetProperty, null, target, new object[] { propertyValue });
}
}
foreach (var field in target.GetType().GetFields())
{
var fieldValue = source.GetType().GetField(field.Name).GetValue(source);
if (fieldValue != null)
{
target.GetType().InvokeMember(field.Name, BindingFlags.SetField, null, target, new object[] { fieldValue });
}
}
}
}
}

View File

@ -1,10 +1,10 @@
using OpenAuth.App.ViewModel;
using OpenAuth.Domain;
using OpenAuth.Domain.Interface;
using System;
using System.Collections.Generic;
using System.Linq;
using OpenAuth.App.ViewModel;
using Infrastructure;
namespace OpenAuth.App
{
@ -18,7 +18,7 @@ namespace OpenAuth.App
}
/// <summary>
/// 加载一个部门及子部门全部Modules
/// 加载一个节点下面的所有
/// </summary>
public dynamic Load(int parentId, int pageindex, int pagesize)
{
@ -35,7 +35,7 @@ namespace OpenAuth.App
total = _repository.GetModuleCntInOrgs(parentId);
}
return new
return new
{
total = total,
list = Modules,
@ -71,7 +71,6 @@ namespace OpenAuth.App
return modules;
}
public Module Find(int id)
{
var module = _repository.FindSingle(u => u.Id == id);
@ -88,23 +87,21 @@ namespace OpenAuth.App
_repository.Delete(u => u.CascadeId.Contains(del.CascadeId));
}
public void AddOrUpdate(Module model)
public void AddOrUpdate(Module vm)
{
Module module = model;
ChangeModuleCascade(module);
if (module.Id == 0)
Module model = new Module();
vm.CopyTo(model); //copy一次防止成员为null的情况
ChangeModuleCascade(model);
if (model.Id == 0)
{
_repository.Add(module);
_repository.Add(model);
}
else
{
_repository.Update(module);
_repository.Update(model);
}
}
#region
//根据同一级中最大的语义ID
@ -150,13 +147,12 @@ namespace OpenAuth.App
else
{
cascadeId = "0." + currentCascadeId;
module.ParentName = "";
module.ParentName = "根节点";
}
module.CascadeId = cascadeId;
}
#endregion
}
}

View File

@ -14,7 +14,6 @@
<tr>
<td>
@Html.HiddenFor(m => m.Id)
@Html.HiddenFor(m =>m.CascadeId)
</td>
</tr>
<tr>
@ -34,7 +33,7 @@
<tr>
<td>
<label for="ParentId" class="control-label x120">上级功能模块:</label>
<input id="ParentId" name="ParentId" value="" style="display: none"/>
<input id="ParentId" name="ParentId" value="@Model.ParentId" style="display: none"/>
<input type="text" name="ParentName" id="ParentName"
data-toggle="selectztree" size="20" data-tree="#j_select_tree1"
value="@Model.ParentName">

View File

@ -139,7 +139,9 @@ namespace OpenAuth.UnitTest
var module = new Module()
{
Name = "test_" + _time,
ParentId = parent
ParentId = parent,
IconName = null,
HotKey = null
};
_app.AddOrUpdate(module);
return module;