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