using System;
using System.Linq;
using System.Text;
using System.Data.Common;
using System.Linq.Expressions;
using System.Collections.Generic;
using System.Threading.Tasks;
using YiSha.Util;
using YiSha.Util.Extension;
using YiSha.Util.Model;
using YiSha.Data;
using YiSha.Data.Repository;
using YiSha.Enum;
using System.ComponentModel.DataAnnotations.Schema;
using YiSha.Entity.SystemManage;
using YiSha.Model.Param.SystemManage;
using YiSha.IService.SystemManage;
namespace YiSha.Service.SystemManage
{
///
/// 创 建:admin
/// 日 期:2021-04-14 14:41
/// 描 述:角色服务实现类
///
public partial class RoleService : IRoleService
{
private DBConnectTypeEnum dbConnectType = DBConnectTypeEnum.SystemDB;
#region 获取数据
///
/// 获取列表数据
///
/// 请求参数
///
public async Task> GetList(RoleListParam param)
{
var expression = ListFilterPartial(param);
var list = await _baseRepository.BaseRepository(dbConnectType).FindList(expression);
return list.ToList();
}
///
/// 获取分页数据
///
/// 请求参数
/// 分页条件
///
public async Task> GetPageList(RoleListParam param, Pagination pagination)
{
var expression = ListFilterPartial(param);
var list = await _baseRepository.BaseRepository(dbConnectType).FindList(expression, pagination);
return list.ToList();
}
///
/// 获取指定列数据
///
/// 表字段列
/// 条件
/// 条件参数
/// 排序列
/// 排序类型
///
public async Task> GetListColumn(string column, string where, List parameters, string groupBy = "", string sort = "basecreatetime", string sortType = "desc")
{
if (string.IsNullOrEmpty(column) || string.IsNullOrEmpty(where))
return new List();
if (!string.IsNullOrEmpty(groupBy))
groupBy = $" group by {groupBy} ";
string tableName = typeof(RoleEntity).GetAttributeValue((TableAttribute ta) => ta.Name);
string selectSql = $"select {column} from {tableName} where baseisdelete = @baseisdelete and {where} {groupBy} order by {sort} {sortType}";
parameters.Add(DbParameterExtension.CreateDbParameter("@baseisdelete", (int)IsDeleteEnum.No, dbConnectType));
var result = await _baseRepository.BaseRepository(dbConnectType).FindList(selectSql, DbParameterExtension.ToDbParameter(parameters.ToArray()));
return result.ToList();
}
///
/// 根据主键Id获取数据
///
/// 主键id
///
public async Task GetEntity(int id)
{
return await _baseRepository.BaseRepository(dbConnectType).FindEntity(id);
}
#endregion
#region 提交数据
///
/// 保存数据
///
/// 实体参数
///
public async Task SaveForm(RoleEntity entity)
{
if (entity.Id.IsNullOrZero())
{
await entity.Create();
await _baseRepository.BaseRepository(dbConnectType).Insert(entity);
}
else
{
await entity.Modify();
await _baseRepository.BaseRepository(dbConnectType).Update(entity);
}
}
///
/// 保存多条数据
///
/// 数据列表
///
public async Task InsertMany(List list)
{
return await _baseRepository.BaseRepository(dbConnectType).Insert(list);
}
///
/// 根据主键Id删除数据
///
/// 主键Id
/// 是否真删除 true真删除 false软删除 默认false
///
public async Task DeleteFormById(string ids, bool del = false)
{
if (string.IsNullOrWhiteSpace(ids) || !ids.Split(", ").Any())
{
return await Task.FromResult(-1);
}
ids = $"{ string.Join(",", ids.Split(","))}";
string tableName = typeof(RoleEntity).GetAttributeValue((TableAttribute ta) => ta.Name);
string deleteSql = $"update {tableName} set baseisdelete = @baseisdelete where FIND_IN_SET (id,@id)";
if (del)
{
deleteSql = $"delete from {tableName} where FIND_IN_SET (id,@id)";
}
List parameters = new List();
parameters.Add(DbParameterExtension.CreateDbParameter("@baseisdelete", (int)IsDeleteEnum.Yes, dbConnectType));
parameters.Add(DbParameterExtension.CreateDbParameter("@id", ids, dbConnectType));
return await _baseRepository.BaseRepository(dbConnectType).ExecuteBySql(deleteSql, DbParameterExtension.ToDbParameter(parameters.ToArray()));
}
///
/// 根据条件删除数据
///
/// where条件
/// 参数
/// 是否真删除 true真删除 false软删除 默认false
///
public async Task DeleteFormByWhere(string where, List parameters, bool del = false)
{
if (string.IsNullOrWhiteSpace(where))
{
return await Task.FromResult(-1);
}
string tableName = typeof(RoleEntity).GetAttributeValue((TableAttribute ta) => ta.Name);
string deleteSql = $"update {tableName} set baseisdelete = @baseisdelete where {where}";
if (del)
{
deleteSql = $"delete from {tableName} where {where}";
}
parameters.Add(DbParameterExtension.CreateDbParameter("@baseisdelete", (int)IsDeleteEnum.Yes, dbConnectType));
return await _baseRepository.BaseRepository(dbConnectType).ExecuteBySql(deleteSql, DbParameterExtension.ToDbParameter(parameters.ToArray()));
}
///
/// 修改多条数据
///
/// 数据列表
///
public async Task UpdateMany(List list)
{
return await _baseRepository.BaseRepository(dbConnectType).Update(list);
}
///
/// 根据条件修改数据
///
/// 修改字段
/// where条件
/// 参数
///
public async Task UpdateFormByWhere(string setField, string where, List parameters)
{
if (string.IsNullOrWhiteSpace(setField) || string.IsNullOrWhiteSpace(where))
{
return await Task.FromResult(-1);
}
string tableName = typeof(RoleEntity).GetAttributeValue((TableAttribute ta) => ta.Name);
string updateSql = $"update {tableName} set {setField} where {where}";
return await _baseRepository.BaseRepository(dbConnectType).ExecuteBySql(updateSql, DbParameterExtension.ToDbParameter(parameters.ToArray()));
}
#endregion
#region 私有方法
/////
///// 列表条件过滤
///// 建议该方法放在Partial部分类中,因为代码生成时当前类会被覆盖(该方法在生成时将会被注释)
/////
/////
/////
//private Expression> ListFilter(RoleListParam param)
//{
// var expression = LinqExtensions.True();
// expression = expression.And(t => t.BaseIsDelete == (int)IsDeleteEnum.No);
// if (param != null)
// {
// }
// return expression;
//}
#endregion
}
}