分组增删改查及分配用户添加

FileMonitor
洁 任 2024-11-14 14:24:13 +08:00
parent f2f1657060
commit d50bc3e33b
8 changed files with 416 additions and 3 deletions

View File

@ -0,0 +1,14 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace OpenAuth.App.BaseApp.SysGroupManager.Request
{
public class GroupUserReq
{
public string GroupId { get; set; }
public List<string> UserIds { get; set; }
}
}

View File

@ -0,0 +1,161 @@
using Infrastructure;
using Microsoft.Extensions.Configuration;
using NetTaste;
using OpenAuth.App.BaseApp.Base;
using OpenAuth.App.BaseApp.SysGroupManager.Request;
using OpenAuth.App.FormScheme.FormHelpers;
using OpenAuth.App.Interface;
using OpenAuth.App.Request;
using OpenAuth.Repository;
using OpenAuth.Repository.Domain;
using SqlSugar;
using StackExchange.Redis;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace OpenAuth.App.BaseApp.SysGroupManager
{
public class SysGroupApp : SqlSugarBaseApp<SysGroup, SugarDbContext>
{
private readonly IConfiguration _configuration;
private readonly ISqlSugarClient client;
public SysGroupApp(ISugarUnitOfWork<SugarDbContext> unitWork,
ISimpleClient<SysGroup> repository, IAuth auth, ISqlSugarClient sqlSugarClient,
IConfiguration configuration) : base(unitWork, repository, auth)
{
_configuration = configuration;
this.client = sqlSugarClient;
}
/// <summary>
/// 分页获取列表数据
/// </summary>
/// <param name="keyword"></param>
/// <param name="pageindex"></param>
/// <param name="pagesize"></param>
/// <returns></returns>
public async Task<Response<PageInfo<List<SysGroup>>>> LoadGroupList(string keyword, int pageindex, int pagesize)
{
//定义且实例化分页数据
RefAsync<int> totalCount = 0;
//数据查询并返回
var info = await this.Repository.AsQueryable()
.WhereIF(!string.IsNullOrEmpty(keyword), t => t.Name.Contains(keyword))
.OrderBy(t => t.Name)
.ToPageListAsync(pageindex, pagesize, totalCount);
return new Response<PageInfo<List<SysGroup>>>
{
Result = new PageInfo<List<SysGroup>>
{
Items = info,
Total = totalCount
}
};
}
/// <summary>
/// 获取实体
/// </summary>
/// <param name="code">Id</param>
/// <returns></returns>
public Task<SysGroup> GetEntityById(string id)
{
return this.Repository.AsQueryable().FirstAsync(t => t.Id == id);
}
/// <summary>
/// 保存(新增、修改)
/// </summary>
/// <param name="id">主键值</param>
/// <param name="group">数据源实体</param>
/// <returns></returns>
public async Task<Response<bool>> SaveEntity(string id, SysGroup group)
{
var flag = false;
//判断是更新还是添加
if (!string.IsNullOrEmpty(id))
{
//判断是否名称重复
SysGroup entity = await this.Repository.GetFirstAsync(t =>t.Name==group.Name&& t.Id != group.Id);
if (entity != null)
{
return new Response<bool>
{
Result = flag,
Message = "分组名称已存在"
};
}
//更新数据
flag = await base.Repository.UpdateAsync(u => new SysGroup
{
Name = group.Name,
GroupLeaderId = group.GroupLeaderId,
GroupLeaderName = group.GroupLeaderName,
Remark = group.Remark
}, u => u.Id == group.Id);
}
else
{
//判断名称是否重复
SysGroup entity = await this.Repository.GetFirstAsync(t => t.Name == group.Name);
if (entity != null)
{
return new Response<bool>
{
Result = flag,
Message = "分组名称已存在"
};
}
//添加数据
group.Id = Guid.NewGuid().ToString();
group.CreateTime = DateTime.Now;
flag = await this.Repository.InsertAsync(group);
}
return new Response<bool>
{
Result = flag,
Message = flag == true ? "success" : "error"
};
}
/// <summary>
/// 删除数据源
/// </summary>
/// <param name="id">主键</param>
public async Task<Response<bool>> DeleteEntity(string id)
{
SysGroup entity = new SysGroup()
{
Id = id
};
var flag = await this.Repository.DeleteAsync(entity);
return new Response<bool>
{
Result = flag,
Message = flag == true ? "success" : "error"
};
}
/// <summary>
/// 为分组分配用户
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
public async Task<Response<bool>> AssignGroupUser(GroupUserReq model)
{
using (var uwo = UnitWork.CreateContext())
{
await uwo.SysGroupuser.DeleteAsync(a => a.GroupId == model.GroupId);
await uwo.SysGroupuser.InsertRangeAsync(model.UserIds.Select(a => new SysGroupuser { GroupId = model.GroupId, UserId = a }).ToList());
var flag = uwo.Commit();
return new Response<bool>
{
Result = flag,
Message = flag == true ? "success" : "error"
};
}
}
}
}

View File

@ -515,7 +515,7 @@ namespace OpenAuth.App
{
using (var uow = base.UnitWork.CreateContext())
{
foreach (var item in uow.Db.DbMaintenance.GetTableInfoList().Where(r => r.Name.ToLower().StartsWith("ins_")))
foreach (var item in uow.Db.DbMaintenance.GetTableInfoList().Where(r => r.Name.ToLower().StartsWith("sys_group")))
{
string entityName = item.Name.Substring(0, 1).ToUpper() + item.Name.Substring(1, 2).ToLower() + item.Name.Substring(4, 1).ToUpper() + item.Name.Substring(5).ToLower();/*实体名大写*/
//string entityName = "DroneCaseInfoSTHX";
@ -525,7 +525,7 @@ namespace OpenAuth.App
// db.MappingColumns.Add(col.DbColumnName.ToUpper() /*类的属性大写*/, col.DbColumnName, entityName);
//}
}
uow.Db.DbFirst.Where(r => r.ToLower().StartsWith("ins_")).IsCreateAttribute().CreateClassFile("E:\\数据中心系统\\codegit\\OpenAuth.Repository\\Domain", "OpenAuth.Repository.Domain");
uow.Db.DbFirst.Where(r => r.ToLower().StartsWith("sys_group")).IsCreateAttribute().CreateClassFile("E:\\数据中心系统\\codegit\\OpenAuth.Repository\\Domain", "OpenAuth.Repository.Domain");
uow.Commit();
}
return "更新实体成功";

View File

@ -76,7 +76,6 @@ namespace OpenAuth.App.ServiceApp.InsTaskHallManager
return query;
}
/// <summary>
/// 最佳牛马排行
/// </summary>
@ -125,5 +124,34 @@ namespace OpenAuth.App.ServiceApp.InsTaskHallManager
return query;
}
/// <summary>
/// 在办任务
/// </summary>
/// <returns></returns>
public async Task<List<dynamic>> GetTaskingList(string flag)
{
DateTime begindate = DateTime.Now;
var query = await client.Queryable<InsTaskgroup>()
.Where(r => r.IsComplate == false)
.GroupBy(r => r.ReciveUserId)
.Select(r => new
{
count = SqlFunc.AggregateCount(r.Id),
userid = r.ReciveUserId
})
.MergeTable()
.LeftJoin<SysUser>((r, u) => r.userid == u.Id.ToString())
.OrderBy((r, u) => r.count)
.Select<dynamic>((r, u) => new
{
r.count,
r.userid,
u.Name,
u.HeadIcon
})
.ToListAsync();
return query;
}
}
}

View File

@ -0,0 +1,62 @@
using System;
using System.Linq;
using System.Text;
using SqlSugar;
namespace OpenAuth.Repository.Domain
{
///<summary>
///人员分组信息表
///</summary>
[SugarTable("sys_group")]
public partial class SysGroup
{
public SysGroup(){
}
/// <summary>
/// Desc:主键
/// Default:
/// Nullable:False
/// </summary>
[SugarColumn(IsPrimaryKey=true)]
public string Id {get;set;}
/// <summary>
/// Desc:分组名称
/// Default:
/// Nullable:False
/// </summary>
public string Name {get;set;}
/// <summary>
/// Desc:创建时间
/// Default:
/// Nullable:True
/// </summary>
public DateTime? CreateTime {get;set;}
/// <summary>
/// Desc:组长id
/// Default:
/// Nullable:True
/// </summary>
public string GroupLeaderId {get;set;}
/// <summary>
/// Desc:组长名称
/// Default:
/// Nullable:True
/// </summary>
public string GroupLeaderName {get;set;}
/// <summary>
/// Desc:备注
/// Default:
/// Nullable:True
/// </summary>
public string Remark {get;set;}
}
}

View File

@ -0,0 +1,35 @@
using System;
using System.Linq;
using System.Text;
using SqlSugar;
namespace OpenAuth.Repository.Domain
{
///<summary>
///
///</summary>
[SugarTable("sys_groupuser")]
public partial class SysGroupuser
{
public SysGroupuser(){
}
/// <summary>
/// Desc:分组id
/// Default:
/// Nullable:False
/// </summary>
[SugarColumn(IsPrimaryKey=true)]
public string GroupId {get;set;}
/// <summary>
/// Desc:用户id
/// Default:
/// Nullable:False
/// </summary>
[SugarColumn(IsPrimaryKey=true)]
public string UserId {get;set;}
}
}

View File

@ -31,6 +31,7 @@ namespace OpenAuth.Repository
public SugarRepositiry<SysCodeRuleSeed> SysCodeRuleSeed { get; set; }
public SugarRepositiry<DbCodeColumns> DbCodeColumns { get; set; }
public SugarRepositiry<DataSource> DataSource { get; set; }
public SugarRepositiry<SysGroupuser> SysGroupuser { get; set; }
public SugarRepositiry<SysDataItemDetail> SysDataItemDetail { get; set; }

View File

@ -0,0 +1,112 @@
using Infrastructure;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using OpenAuth.App.BaseApp.SysGroupManager;
using OpenAuth.App.BaseApp.SysGroupManager.Request;
using OpenAuth.App.ServiceApp.InsTaskHallManager;
using OpenAuth.Repository.Domain;
namespace OpenAuth.WebApi.Controllers.BaseControllers
{
/// <summary>
/// 分组
/// </summary>
[Route("api/[controller]/[action]")]
[ApiController]
public class SysGroupController : ControllerBase
{
private readonly SysGroupApp _app;
public SysGroupController(SysGroupApp app)
{
_app = app;
}
/// <summary>
/// 分页获取列表数据
/// </summary>
/// <param name="keyword">筛选条件</param>
/// <param name="page">当前页</param>
/// <param name="limit">每页条数</param>
/// <returns></returns>
[HttpGet]
public async Task<Response<PageInfo<List<SysGroup>>>> LoadGroupList(string keyword, int page = 1, int limit = 15)
{
return await _app.LoadGroupList(keyword, page, limit);
}
/// <summary>
/// 获取单个分组信息
/// </summary>
/// <param name="id">主键</param>
/// <returns></returns>
[HttpGet]
public async Task<SysGroup> GetEntityById(string id)
{
return await _app.GetEntityById(id);
}
/// <summary>
/// 新增分组
/// </summary>
/// <param name="id">主键值</param>
/// <param name="group">数据源实体</param>
/// <returns></returns>
[HttpPost]
public async Task<Response<bool>> SaveEntity(string id, SysGroup group)
{
var result = new Response<bool>();
try
{
result = await _app.SaveEntity(id, group);
}
catch (Exception ex)
{
result.Code = 500;
result.Message = ex.InnerException?.Message ?? ex.Message;
}
return result;
}
/// <summary>
/// 删除分组
/// </summary>
/// <param name="id">主键</param>
[HttpPost]
public async Task<Response<bool>> DeleteEntity(string id)
{
var result = new Response<bool>();
try
{
result = await _app.DeleteEntity(id);
}
catch (Exception ex)
{
result.Code = 500;
result.Message = ex.InnerException?.Message ?? ex.Message;
}
return result;
}
/// <summary>
/// 给分组分配用户
/// </summary>
/// <param name="model">数据</param>
[HttpPost]
public async Task<Response<bool>> AssignGroupUser(GroupUserReq model)
{
var result = new Response<bool>();
try
{
result = await _app.AssignGroupUser(model);
}
catch (Exception ex)
{
result.Code = 500;
result.Message = ex.InnerException?.Message ?? ex.Message;
}
return result;
}
}
}