Infrastructure/OpenAuth.App/BaseApp/SysGroupManager/SysGroupApp.cs

162 lines
5.6 KiB
C#

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"
};
}
}
}
}