using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ZDWorkflow.Model;
using ZDWorkflow.Common;
using ZDWorkflow.Common.Extensions;
using CYQ.Data;
using CYQ.Data.Orm;
using CYQ.Data.Table;

namespace ZDWorkflow.BLL
{
/// <summary>
/// GroupRole(角色组与角色关系表)
/// </summary>
public class GroupRoleBLL
{
/// <summary>
/// 分组列表操作角色
/// </summary>
/// <param name="jsonRoles"></param>
/// <param name="user"></param>
/// <returns></returns>
public ResultModel EditGroupRole(string jsonRoles, long GroupId, LoginUserInfo user)
{
ResultModel result = new ResultModel();
using (MAction mc = new MAction(TableNames.GroupRole))
{
mc.BeginTransation();
try
{
//传到过来
List<GroupRole> grlistnew = new List<GroupRole>();
grlistnew = jsonRoles.ToObject<List<GroupRole>>();
// List<long> idsnew = new List<long>();
var idsnew = grlistnew.Select(s => s.RoleId).ToList();

//原数据库
List<GroupRole> grlistold = new List<GroupRole>();
MDataTable dt = mc.Select("GroupId=" + GroupId);
grlistold = dt.ToList<GroupRole>();
//List<long> idsold = new List<long>();
var idsold = grlistold.Select(s => s.RoleId).ToList();

#region 注释
//foreach (GroupRole item in grlistnew) {

// GroupRole ditem = grlistold.FirstOrDefault(s => s.RoleId == item.RoleId);
// if (ditem != null)
// {
// //新增
// }
// else
// {
// //修改
// item.GroupId = GroupId;
// }
//}
//删除
//var del= idsold.Where(w => !idsnew.Contains(w)).ToList();
#endregion
var a = idsnew.Intersect(idsold); // to modify
var b = idsnew.Except(idsold); // to add
var c = idsold.Except(idsnew); // to delete
List<GroupRole> toAddList = new List<GroupRole>();
List<GroupRole> toDeleteList = new List<GroupRole>();
List<GroupRole> toModifyList = new List<GroupRole>();
// set addList
foreach (var bitem in b)
{
var bModel = grlistnew.Find(p => p.RoleId == bitem);
bModel.GroupId = GroupId;
toAddList.Add(bModel);
}
//toAddList = grlistnew.Where(w => b.Contains(w.RoleId)).ToList();
// set delete querymodel
toDeleteList = grlistold.Where(w => c.Contains(w.RoleId)).ToList();
// set modify querymodel
toModifyList = grlistold.Where(w => a.Contains(w.RoleId)).ToList();

//新增
mc.Data.LoadFrom(toAddList);
mc.Insert();

//删除
foreach (GroupRole item in toDeleteList)
{
mc.SetPara("GroupId", item.GroupId);
mc.SetPara("RoleId", item.RoleId);
mc.Delete("GroupId=@GroupId and RoleId=@RoleId");
}
mc.EndTransation();
result.Status = (int)EStatus.Success;
result.Msg = "提交成功!";
}
catch (Exception ex)
{
mc.RollBack();
result = ex;
}
}
return result;
}
}
}

最新文章

  1. Java Js实现导出csv
  2. Android开发之补间动画、XML方式定义补间动画
  3. JQuery官方学习资料(译):使用JQuery的.index()方法
  4. MJ刷新控件MJRefreshFooterView上拉之后收不回来的解决办法
  5. 将16进制颜色转换成UIColor-ios
  6. [LeetCode]题解(python):080-Remove Duplicates from Sorted Array II
  7. 多说【最近访客】JS插件通用代码使用方法
  8. mybatis 详解(七)------一对一、一对多、多对多
  9. UITableView section 圆角 阴影
  10. Java中级开发工程师知识点归纳
  11. Django---ORM中的锁和事务
  12. Windows下安装Confluence并破解汉化
  13. 如何将自己写的verilog模块封装成IP核
  14. 了解ARM+Android
  15. python之格式化输出
  16. TCP连接与OKHTTP复用连接池
  17. Vue2学习笔记:过渡效果css
  18. new[] 到底做了什么?
  19. 多字节(一般指GBK) utf8 Unicode 编码互转
  20. jquery类似方法的比较(二)

热门文章

  1. .NET开源工作流RoadFlow-流程运行-工作委托
  2. [英中双语] Pragmatic Software Development Tips 务实的软件开发提示
  3. SpringMVC学习(五)——拦截器示例
  4. Eclipse编码格式
  5. NO.012-2018.02.17《题都城南庄》唐代:崔护
  6. Microsoft Visual C++ 2005 Redistributable 无法卸载问题解决办法
  7. html style标签
  8. Spark系列-SparkSQL实战
  9. [19/03/29-星期五] IO技术_File(文件)类(可操作文件,不能操作其里边内容,位于Java.io 包中)&amp;递归遍历
  10. python中模块与包的概念