|
|
@ -1,10 +1,8 @@ |
|
|
|
using System.Data; |
|
|
|
using System.Data; |
|
|
|
using System.Linq.Expressions; |
|
|
|
using System.Linq.Expressions; |
|
|
|
using System.Reflection; |
|
|
|
|
|
|
|
using AgileObjects.AgileMapper; |
|
|
|
using AgileObjects.AgileMapper; |
|
|
|
using Microsoft.AspNetCore.Http; |
|
|
|
using Microsoft.AspNetCore.Http; |
|
|
|
using Microsoft.AspNetCore.Mvc; |
|
|
|
using OfficeOpenXml.FormulaParsing.Excel.Functions.Text; |
|
|
|
using MySqlX.XDevAPI.Common; |
|
|
|
|
|
|
|
using SqlSugar; |
|
|
|
using SqlSugar; |
|
|
|
using Tiobon.Core.Common; |
|
|
|
using Tiobon.Core.Common; |
|
|
|
using Tiobon.Core.Common.DB.Dapper; |
|
|
|
using Tiobon.Core.Common.DB.Dapper; |
|
|
@ -15,338 +13,13 @@ using Tiobon.Core.Common.Helper; |
|
|
|
using Tiobon.Core.Common.UserManager; |
|
|
|
using Tiobon.Core.Common.UserManager; |
|
|
|
using Tiobon.Core.DataAccess; |
|
|
|
using Tiobon.Core.DataAccess; |
|
|
|
using Tiobon.Core.IRepository.Base; |
|
|
|
using Tiobon.Core.IRepository.Base; |
|
|
|
|
|
|
|
using Tiobon.Core.IServices; |
|
|
|
using Tiobon.Core.IServices.BASE; |
|
|
|
using Tiobon.Core.IServices.BASE; |
|
|
|
using Tiobon.Core.Model; |
|
|
|
using Tiobon.Core.Model; |
|
|
|
|
|
|
|
using Tiobon.Core.Model.Models.RootTkey; |
|
|
|
|
|
|
|
|
|
|
|
namespace Tiobon.Core.Services.BASE; |
|
|
|
namespace Tiobon.Core.Services.BASE; |
|
|
|
|
|
|
|
|
|
|
|
public class BaseServices<TEntity> : IBaseServices<TEntity> where TEntity : class, new() |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
public BaseServices(IBaseRepository<TEntity> BaseDal = null) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
this.BaseDal = BaseDal; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//public IBaseRepository<TEntity> baseDal = new BaseRepository<TEntity>(); |
|
|
|
|
|
|
|
public IBaseRepository<TEntity> BaseDal { get; set; } //通过在子类的构造函数中注入,这里是基类,不用构造函数 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public ISqlSugarClient Db => BaseDal.Db; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public async Task<TEntity> QueryById(object objId) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
return await BaseDal.QueryById(objId); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary> |
|
|
|
|
|
|
|
/// 根据ID查询一条数据 |
|
|
|
|
|
|
|
/// </summary> |
|
|
|
|
|
|
|
/// <param name="objId">id(必须指定主键特性 [SugarColumn(IsPrimaryKey=true)]),如果是联合主键,请使用Where条件</param> |
|
|
|
|
|
|
|
/// <param name="blnUseCache">是否使用缓存</param> |
|
|
|
|
|
|
|
/// <returns>数据实体</returns> |
|
|
|
|
|
|
|
public async Task<TEntity> QueryById(object objId, bool blnUseCache = false) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
return await BaseDal.QueryById(objId, blnUseCache); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary> |
|
|
|
|
|
|
|
/// 根据ID查询数据 |
|
|
|
|
|
|
|
/// </summary> |
|
|
|
|
|
|
|
/// <param name="lstIds">id列表(必须指定主键特性 [SugarColumn(IsPrimaryKey=true)]),如果是联合主键,请使用Where条件</param> |
|
|
|
|
|
|
|
/// <returns>数据实体列表</returns> |
|
|
|
|
|
|
|
public async Task<List<TEntity>> QueryByIDs(object[] lstIds) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
return await BaseDal.QueryByIDs(lstIds); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary> |
|
|
|
|
|
|
|
/// 写入实体数据 |
|
|
|
|
|
|
|
/// </summary> |
|
|
|
|
|
|
|
/// <param name="entity">博文实体类</param> |
|
|
|
|
|
|
|
/// <returns></returns> |
|
|
|
|
|
|
|
public async Task<long> Add(TEntity entity) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
return await BaseDal.Add(entity); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary> |
|
|
|
|
|
|
|
/// 批量插入实体(速度快) |
|
|
|
|
|
|
|
/// </summary> |
|
|
|
|
|
|
|
/// <param name="listEntity">实体集合</param> |
|
|
|
|
|
|
|
/// <returns>影响行数</returns> |
|
|
|
|
|
|
|
public async Task<List<long>> Add(List<TEntity> listEntity) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
return await BaseDal.Add(listEntity); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary> |
|
|
|
|
|
|
|
/// 更新实体数据 |
|
|
|
|
|
|
|
/// </summary> |
|
|
|
|
|
|
|
/// <param name="entity">博文实体类</param> |
|
|
|
|
|
|
|
/// <returns></returns> |
|
|
|
|
|
|
|
public async Task<bool> Update(TEntity entity) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
return await BaseDal.Update(entity); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
/// <summary> |
|
|
|
|
|
|
|
/// 更新实体数据 |
|
|
|
|
|
|
|
/// </summary> |
|
|
|
|
|
|
|
/// <param name="entity">博文实体类</param> |
|
|
|
|
|
|
|
/// <returns></returns> |
|
|
|
|
|
|
|
public async Task<bool> Update(List<TEntity> entity) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
return await BaseDal.Update(entity); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public async Task<bool> Update(TEntity entity, string where) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
return await BaseDal.Update(entity, where); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public async Task<bool> Update(object operateAnonymousObjects) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
return await BaseDal.Update(operateAnonymousObjects); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public async Task<bool> Update(TEntity entity, List<string> lstColumns = null, List<string> lstIgnoreColumns = null, string where = "") |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
return await BaseDal.Update(entity, lstColumns, lstIgnoreColumns, where); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary> |
|
|
|
|
|
|
|
/// 根据实体删除一条数据 |
|
|
|
|
|
|
|
/// </summary> |
|
|
|
|
|
|
|
/// <param name="entity">博文实体类</param> |
|
|
|
|
|
|
|
/// <returns></returns> |
|
|
|
|
|
|
|
public async Task<bool> Delete(TEntity entity) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
return await BaseDal.Delete(entity); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary> |
|
|
|
|
|
|
|
/// 删除指定ID的数据 |
|
|
|
|
|
|
|
/// </summary> |
|
|
|
|
|
|
|
/// <param name="id">主键ID</param> |
|
|
|
|
|
|
|
/// <returns></returns> |
|
|
|
|
|
|
|
public async Task<bool> DeleteById(object id) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
return await BaseDal.DeleteById(id); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary> |
|
|
|
|
|
|
|
/// 删除指定ID集合的数据(批量删除) |
|
|
|
|
|
|
|
/// </summary> |
|
|
|
|
|
|
|
/// <param name="ids">主键ID集合</param> |
|
|
|
|
|
|
|
/// <returns></returns> |
|
|
|
|
|
|
|
public async Task<bool> DeleteByIds(object[] ids) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
return await BaseDal.DeleteByIds(ids); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary> |
|
|
|
|
|
|
|
/// 查询所有数据 |
|
|
|
|
|
|
|
/// </summary> |
|
|
|
|
|
|
|
/// <returns>数据列表</returns> |
|
|
|
|
|
|
|
public async Task<List<TEntity>> Query() |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
return await BaseDal.Query(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary> |
|
|
|
|
|
|
|
/// 查询数据列表 |
|
|
|
|
|
|
|
/// </summary> |
|
|
|
|
|
|
|
/// <param name="where">条件</param> |
|
|
|
|
|
|
|
/// <returns>数据列表</returns> |
|
|
|
|
|
|
|
public async Task<List<TEntity>> Query(string where) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
return await BaseDal.Query(where); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary> |
|
|
|
|
|
|
|
/// 查询数据列表 |
|
|
|
|
|
|
|
/// </summary> |
|
|
|
|
|
|
|
/// <param name="whereExpression">whereExpression</param> |
|
|
|
|
|
|
|
/// <returns>数据列表</returns> |
|
|
|
|
|
|
|
public async Task<List<TEntity>> Query(Expression<Func<TEntity, bool>> whereExpression) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
return await BaseDal.Query(whereExpression); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary> |
|
|
|
|
|
|
|
/// 按照特定列查询数据列表 |
|
|
|
|
|
|
|
/// </summary> |
|
|
|
|
|
|
|
/// <typeparam name="TResult"></typeparam> |
|
|
|
|
|
|
|
/// <param name="expression"></param> |
|
|
|
|
|
|
|
/// <returns></returns> |
|
|
|
|
|
|
|
public async Task<List<TResult>> Query<TResult>(Expression<Func<TEntity, TResult>> expression) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
return await BaseDal.Query(expression); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary> |
|
|
|
|
|
|
|
/// 按照特定列查询数据列表带条件排序 |
|
|
|
|
|
|
|
/// </summary> |
|
|
|
|
|
|
|
/// <typeparam name="TResult"></typeparam> |
|
|
|
|
|
|
|
/// <param name="whereExpression">过滤条件</param> |
|
|
|
|
|
|
|
/// <param name="expression">查询实体条件</param> |
|
|
|
|
|
|
|
/// <param name="orderByFileds">排序条件</param> |
|
|
|
|
|
|
|
/// <returns></returns> |
|
|
|
|
|
|
|
public async Task<List<TResult>> Query<TResult>(Expression<Func<TEntity, TResult>> expression, Expression<Func<TEntity, bool>> whereExpression, string orderByFileds) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
return await BaseDal.Query(expression, whereExpression, orderByFileds); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary> |
|
|
|
|
|
|
|
/// 查询一个列表 |
|
|
|
|
|
|
|
/// </summary> |
|
|
|
|
|
|
|
/// <param name="whereExpression">条件表达式</param> |
|
|
|
|
|
|
|
/// <param name="strOrderByFileds">排序字段,如name asc,age desc</param> |
|
|
|
|
|
|
|
/// <returns>数据列表</returns> |
|
|
|
|
|
|
|
public async Task<List<TEntity>> Query(Expression<Func<TEntity, bool>> whereExpression, Expression<Func<TEntity, object>> orderByExpression, bool isAsc = true) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
return await BaseDal.Query(whereExpression, orderByExpression, isAsc); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public async Task<List<TEntity>> Query(Expression<Func<TEntity, bool>> whereExpression, string orderByFileds) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
return await BaseDal.Query(whereExpression, orderByFileds); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary> |
|
|
|
|
|
|
|
/// 查询一个列表 |
|
|
|
|
|
|
|
/// </summary> |
|
|
|
|
|
|
|
/// <param name="where">条件</param> |
|
|
|
|
|
|
|
/// <param name="orderByFileds">排序字段,如name asc,age desc</param> |
|
|
|
|
|
|
|
/// <returns>数据列表</returns> |
|
|
|
|
|
|
|
public async Task<List<TEntity>> Query(string where, string orderByFileds) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
return await BaseDal.Query(where, orderByFileds); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary> |
|
|
|
|
|
|
|
/// 根据sql语句查询 |
|
|
|
|
|
|
|
/// </summary> |
|
|
|
|
|
|
|
/// <param name="sql">完整的sql语句</param> |
|
|
|
|
|
|
|
/// <param name="parameters">参数</param> |
|
|
|
|
|
|
|
/// <returns>泛型集合</returns> |
|
|
|
|
|
|
|
public async Task<List<TEntity>> QuerySql(string sql, SugarParameter[] parameters = null) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
return await BaseDal.QuerySql(sql, parameters); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary> |
|
|
|
|
|
|
|
/// 根据sql语句查询 |
|
|
|
|
|
|
|
/// </summary> |
|
|
|
|
|
|
|
/// <param name="sql">完整的sql语句</param> |
|
|
|
|
|
|
|
/// <param name="parameters">参数</param> |
|
|
|
|
|
|
|
/// <returns>DataTable</returns> |
|
|
|
|
|
|
|
public async Task<DataTable> QueryTable(string sql, SugarParameter[] parameters = null) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
return await BaseDal.QueryTable(sql, parameters); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary> |
|
|
|
|
|
|
|
/// 查询前N条数据 |
|
|
|
|
|
|
|
/// </summary> |
|
|
|
|
|
|
|
/// <param name="whereExpression">条件表达式</param> |
|
|
|
|
|
|
|
/// <param name="top">前N条</param> |
|
|
|
|
|
|
|
/// <param name="orderByFileds">排序字段,如name asc,age desc</param> |
|
|
|
|
|
|
|
/// <returns>数据列表</returns> |
|
|
|
|
|
|
|
public async Task<List<TEntity>> Query(Expression<Func<TEntity, bool>> whereExpression, int top, string orderByFileds) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
return await BaseDal.Query(whereExpression, top, orderByFileds); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary> |
|
|
|
|
|
|
|
/// 查询前N条数据 |
|
|
|
|
|
|
|
/// </summary> |
|
|
|
|
|
|
|
/// <param name="where">条件</param> |
|
|
|
|
|
|
|
/// <param name="top">前N条</param> |
|
|
|
|
|
|
|
/// <param name="orderByFileds">排序字段,如name asc,age desc</param> |
|
|
|
|
|
|
|
/// <returns>数据列表</returns> |
|
|
|
|
|
|
|
public async Task<List<TEntity>> Query(string where, int top, string orderByFileds) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
return await BaseDal.Query(where, top, orderByFileds); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary> |
|
|
|
|
|
|
|
/// 分页查询 |
|
|
|
|
|
|
|
/// </summary> |
|
|
|
|
|
|
|
/// <param name="whereExpression">条件表达式</param> |
|
|
|
|
|
|
|
/// <param name="pageIndex">页码(下标0)</param> |
|
|
|
|
|
|
|
/// <param name="pageSize">页大小</param> |
|
|
|
|
|
|
|
/// <param name="orderByFileds">排序字段,如name asc,age desc</param> |
|
|
|
|
|
|
|
/// <returns>数据列表</returns> |
|
|
|
|
|
|
|
public async Task<List<TEntity>> Query(Expression<Func<TEntity, bool>> whereExpression, int pageIndex, int pageSize, string orderByFileds) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
return await BaseDal.Query(whereExpression, pageIndex, pageSize, orderByFileds); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary> |
|
|
|
|
|
|
|
/// 分页查询 |
|
|
|
|
|
|
|
/// </summary> |
|
|
|
|
|
|
|
/// <param name="where">条件</param> |
|
|
|
|
|
|
|
/// <param name="pageIndex">页码(下标0)</param> |
|
|
|
|
|
|
|
/// <param name="pageSize">页大小</param> |
|
|
|
|
|
|
|
/// <param name="orderByFileds">排序字段,如name asc,age desc</param> |
|
|
|
|
|
|
|
/// <returns>数据列表</returns> |
|
|
|
|
|
|
|
public async Task<List<TEntity>> Query(string where, int pageIndex, int pageSize, string orderByFileds) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
return await BaseDal.Query(where, pageIndex, pageSize, orderByFileds); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public async Task<PageModel<TEntity>> QueryPage(Expression<Func<TEntity, bool>> whereExpression, int pageIndex = 1, int pageSize = 20, string orderByFileds = null) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
return await BaseDal.QueryPage(whereExpression, pageIndex, pageSize, orderByFileds); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
public async Task<List<TResult>> QueryMuch<T, T2, T3, TResult>(Expression<Func<T, T2, T3, object[]>> joinExpression, Expression<Func<T, T2, T3, TResult>> selectExpression, Expression<Func<T, T2, T3, bool>> whereLambda = null) where T : class, new() |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
return await BaseDal.QueryMuch(joinExpression, selectExpression, whereLambda); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public async Task<PageModel<TEntity>> QueryPage(PaginationModel pagination) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
var express = DynamicLinqFactory.CreateLambda<TEntity>(pagination.Conditions); |
|
|
|
|
|
|
|
return await QueryPage(express, pagination.PageIndex, pagination.PageSize, pagination.OrderByFileds); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#region 分表 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public async Task<List<long>> AddSplit(TEntity entity) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
return await BaseDal.AddSplit(entity); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public async Task<bool> UpdateSplit(TEntity entity, DateTime dateTime) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
return await BaseDal.UpdateSplit(entity, dateTime); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary> |
|
|
|
|
|
|
|
/// 根据实体删除一条数据 |
|
|
|
|
|
|
|
/// </summary> |
|
|
|
|
|
|
|
/// <param name="entity">博文实体类</param> |
|
|
|
|
|
|
|
/// <returns></returns> |
|
|
|
|
|
|
|
public async Task<bool> DeleteSplit(TEntity entity, DateTime dateTime) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
return await BaseDal.DeleteSplit(entity, dateTime); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public async Task<TEntity> QueryByIdSplit(object objId) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
return await BaseDal.QueryByIdSplit(objId); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public async Task<PageModel<TEntity>> QueryPageSplit(Expression<Func<TEntity, bool>> whereExpression, DateTime beginTime, DateTime endTime, int pageIndex = 1, int pageSize = 20, string orderByFields = null) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
return await BaseDal.QueryPageSplit(whereExpression, beginTime, endTime, pageIndex, pageSize, orderByFields); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#endregion |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary> |
|
|
|
/// <summary> |
|
|
|
/// 增删改查基础服务 |
|
|
|
/// 增删改查基础服务 |
|
|
|
/// </summary> |
|
|
|
/// </summary> |
|
|
@ -380,7 +53,50 @@ public class BaseServices<TEntity, TEntityDto, TInsertDto, TEditDto> : IBaseServ |
|
|
|
public async Task<TEntityDto> QueryById(object objId) |
|
|
|
public async Task<TEntityDto> QueryById(object objId) |
|
|
|
{ |
|
|
|
{ |
|
|
|
var data = await BaseDal.QueryById(objId); |
|
|
|
var data = await BaseDal.QueryById(objId); |
|
|
|
return Mapper.Map(data).ToANew<TEntityDto>(); |
|
|
|
var dto = Mapper.Map(data).ToANew<TEntityDto>(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#region 系统信息 |
|
|
|
|
|
|
|
var getType = typeof(TEntityDto).GetProperties(); |
|
|
|
|
|
|
|
if (getType.Any(p => p.Name == "CreateDataInfo") && getType.Any(p => p.Name == "UpdateDataInfo")) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var userIds = new List<int?>(); |
|
|
|
|
|
|
|
var CreateDataInfo = getType.Where(p => p.Name == "CreateDataInfo").FirstOrDefault(); |
|
|
|
|
|
|
|
var UpdateDataInfo = getType.Where(p => p.Name == "UpdateDataInfo").FirstOrDefault(); |
|
|
|
|
|
|
|
var CreateBy = getType.Where(p => p.Name == "CreateBy").FirstOrDefault(); |
|
|
|
|
|
|
|
var UpdateBy = getType.Where(p => p.Name == "UpdateBy").FirstOrDefault(); |
|
|
|
|
|
|
|
var CreateTime = getType.Where(p => p.Name == "CreateTime").FirstOrDefault(); |
|
|
|
|
|
|
|
var UpdateTime = getType.Where(p => p.Name == "UpdateTime").FirstOrDefault(); |
|
|
|
|
|
|
|
var createBy = CreateBy.GetValue(dto, null); |
|
|
|
|
|
|
|
var updateBy = UpdateBy.GetValue(dto, null); |
|
|
|
|
|
|
|
DateTime? createTime = CreateTime.GetValue(dto, null) != null ? Convert.ToDateTime(CreateTime.GetValue(dto, null)) : null; |
|
|
|
|
|
|
|
DateTime? updateTime = UpdateTime.GetValue(dto, null) != null ? Convert.ToDateTime(UpdateTime.GetValue(dto, null)) : null; |
|
|
|
|
|
|
|
if (createBy != null) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
var dt = await Db.Ado.GetDataTableAsync($"SELECT UserId, UserName FROM Ghrs_User WHERE UserId='{createBy}'"); |
|
|
|
|
|
|
|
if (dt.Rows.Count > 0) |
|
|
|
|
|
|
|
CreateDataInfo.SetValue(dto, $"创建信息 {dt.Rows[0]["UserName"]} 于 {(createTime != null ? createTime.Value.ToString(@"yyyy\/MM\/dd HH:mm") : null)} 创建"); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
if (updateBy != null) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
var dt = await Db.Ado.GetDataTableAsync($"SELECT UserId, UserName FROM Ghrs_User WHERE UserId='{updateBy}'"); |
|
|
|
|
|
|
|
UpdateDataInfo.SetValue(dto, $"修改信息 {dt.Rows[0]["UserName"]} 于 {(updateTime != null ? updateTime.Value.ToString(@"yyyy\/MM\/dd HH:mm") : null)} 最后修改"); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
//if (exampaper.CreateBy != null) |
|
|
|
|
|
|
|
// userIds.Add(Convert.ToInt32(exampaper.CreateBy.Value)); |
|
|
|
|
|
|
|
//if (exampaper.UpdateBy != null) |
|
|
|
|
|
|
|
// userIds.Add(Convert.ToInt32(exampaper.UpdateBy.Value)); |
|
|
|
|
|
|
|
//var users = await _ghrs_UserServices.Query(x => userIds.Contains(x.UserId)); |
|
|
|
|
|
|
|
//if (exampaper.CreateBy != null) |
|
|
|
|
|
|
|
// input.CreateDataInfo = |
|
|
|
|
|
|
|
//if (exampaper.UpdateBy != null) |
|
|
|
|
|
|
|
// input.CreateDataInfo = ; |
|
|
|
|
|
|
|
#endregion |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return dto; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/// <summary> |
|
|
|
/// <summary> |
|
|
@ -879,7 +595,7 @@ public class BaseServices<TEntity, TEntityDto, TInsertDto, TEditDto> : IBaseServ |
|
|
|
/// <returns></returns> |
|
|
|
/// <returns></returns> |
|
|
|
protected void ConvertTEditDto2TEntity(TEditDto source, TEntity dest) |
|
|
|
protected void ConvertTEditDto2TEntity(TEditDto source, TEntity dest) |
|
|
|
{ |
|
|
|
{ |
|
|
|
foreach (PropertyInfo mItem in typeof(TEditDto).GetProperties()) |
|
|
|
foreach (System.Reflection.PropertyInfo mItem in typeof(TEditDto).GetProperties()) |
|
|
|
{ |
|
|
|
{ |
|
|
|
if (dest.HasField(mItem.Name)) |
|
|
|
if (dest.HasField(mItem.Name)) |
|
|
|
dest.SetValueForField(mItem.Name, mItem.GetValue(source, null)); |
|
|
|
dest.SetValueForField(mItem.Name, mItem.GetValue(source, null)); |
|
|
@ -926,7 +642,7 @@ public class BaseServices<TEntity, TEntityDto, TInsertDto, TEditDto> : IBaseServ |
|
|
|
entity.GetOnlyList(out names, out values, out descriptions); |
|
|
|
entity.GetOnlyList(out names, out values, out descriptions); |
|
|
|
for (int i = 0; i < names.Count; i++) |
|
|
|
for (int i = 0; i < names.Count; i++) |
|
|
|
{ |
|
|
|
{ |
|
|
|
CheckCodeExist(tableName, names[i], values[i], id != null ? ModifyType.Edit : ModifyType.Add, descriptions[i]); |
|
|
|
CheckCodeExist(tableName, names[i], values[i], id != null ? ModifyType.Edit : ModifyType.Add, descriptions[i], id); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
/// <summary> |
|
|
|
/// <summary> |
|
|
|