129 lines
6.3 KiB
Plaintext
129 lines
6.3 KiB
Plaintext
// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
|
|
//
|
|
// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
|
|
//
|
|
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
|
|
|
|
@{
|
|
string joinTableName = "u";
|
|
Dictionary<string, int> definedObjects = new Dictionary<string, int>();
|
|
bool haveLikeCdt = false;
|
|
string RemoteField="";
|
|
string PKName="";
|
|
foreach (var column in Model.TableField){
|
|
if (column.QueryWhether == "Y" && column.QueryType == "like"){
|
|
haveLikeCdt = true;
|
|
}
|
|
if(column.RemoteVerify){
|
|
RemoteField=@column.PropertyName;
|
|
}
|
|
if(column.ColumnKey == "True"){
|
|
PKName=column.PropertyName;
|
|
}
|
|
}
|
|
}
|
|
@if(@Model.NameSpace != "Admin.NET.Core"){
|
|
@:using Admin.NET.Core;
|
|
}
|
|
using Admin.NET.Core.Service;
|
|
|
|
namespace @(@Model.NameSpace);
|
|
public partial class @(@Model.ClassName)Mid
|
|
{
|
|
/// <summary>
|
|
/// 获取查询
|
|
/// </summary>
|
|
/// <param name="_@(@Model.LowerClassName)Rep"></param>
|
|
/// <param name="input"></param>
|
|
/// <returns></returns>
|
|
public static ISugarQueryable<@(@Model.ClassName)> GetQuery(SqlSugarRepository<@(@Model.ClassName)> _@(@Model.LowerClassName)Rep,Page@(@Model.ClassName)Input input)
|
|
{
|
|
var sysCacheService = App.GetRequiredService<SysCacheService>();
|
|
var db = App.GetRequiredService<ISqlSugarClient>();
|
|
@if (haveLikeCdt) {
|
|
@:input.SearchKey = input.SearchKey?.Trim();
|
|
}
|
|
var query = _@(@Model.LowerClassName)Rep.AsQueryable()
|
|
@{string conditionFlag = "";}
|
|
@if (haveLikeCdt) {
|
|
@:.WhereIF(!string.IsNullOrEmpty(input.SearchKey), u =>
|
|
@foreach (var column in Model.TableField){
|
|
if (@column.QueryWhether == "Y" && column.QueryType == "like"){
|
|
@:@(conditionFlag)u.@(@column.PropertyName).Contains(input.SearchKey)
|
|
conditionFlag="|| ";
|
|
}
|
|
}
|
|
@:)
|
|
}
|
|
@foreach (var column in Model.TableField){
|
|
if (@column.QueryWhether == "Y"){
|
|
if (@column.NetType?.TrimEnd('?') == "string"){
|
|
if(@column.QueryType == "like"){
|
|
@:.WhereIF(!string.IsNullOrWhiteSpace(input.@column.PropertyName), u => u.@(@column.PropertyName).Contains(input.@(@column.PropertyName).Trim()))
|
|
}else{
|
|
@:.WhereIF(!string.IsNullOrWhiteSpace(input.@column.PropertyName), u => u.@(@column.PropertyName) @column.QueryType input.@(@column.PropertyName))
|
|
}
|
|
}else if(@column.NetType?.TrimEnd('?') == "int" || @column.NetType?.TrimEnd('?') == "long"){
|
|
@:.WhereIF(input.@column.PropertyName>0, u => (int)u.@(@column.PropertyName) @column.QueryType input.@(@column.PropertyName))
|
|
}else if(@column.NetType?.TrimEnd('?') == "DateTime" && @column.QueryType == "~"){
|
|
@:.WhereIF(input.@(@column.PropertyName)Range != null && input.@(@column.PropertyName)Range.Length == 2, u => u.@(@column.PropertyName) >= input.@(@column.PropertyName)Range[0] && u.@(@column.PropertyName) <= input.@(@column.PropertyName)Range[1])
|
|
}else if(@column.NetType?.TrimEnd('?').EndsWith("Enum") == true) {
|
|
@:.WhereIF(input.@(@column.PropertyName).HasValue, u => u.@(@column.PropertyName) @column.QueryType input.@(@column.PropertyName))
|
|
}
|
|
}
|
|
if(@column.PropertyName == "IsDelete") {
|
|
@:.Where( u => u.IsDelete == false)
|
|
}
|
|
}
|
|
@if (Model.TableField.Any(c => c.PropertyName == "OrderNo"))
|
|
{
|
|
@:.OrderBy(u => u.OrderNo)
|
|
}
|
|
|
|
@if(!string.IsNullOrEmpty(Model.TreeName)){
|
|
@:.Mapper(c => c.Name= c.@(@Model.TreeName).ToString())
|
|
}
|
|
@foreach (var column in Model.TableField){
|
|
if(@column.EffectType == "Upload"){
|
|
@://.Mapper(c => c.@(@column.PropertyName)Attachment, c => c.@(@column.PropertyName))
|
|
}
|
|
else if(@column.EffectType == "ForeignKey"){
|
|
@:.Mapper(t =>
|
|
@:{
|
|
@: //使用缓存
|
|
@: var key = $"@(@column.FkEntityName)_{t.@(@column.PropertyName)}";
|
|
@: if (!sysCacheService.ExistKey(key))
|
|
@: {
|
|
@: var m = db.ForTenant<@(@column.FkEntityName)>().Queryable<@(@column.FkEntityName)>().First(f => f.@(@column.FkLinkColumnName) == t.@(@column.PropertyName));
|
|
@: if (m != null) sysCacheService.Set(key, m);
|
|
@: }
|
|
@: t.@(@column.PropertyName)@(@column.FkColumnName) = sysCacheService.Get<@(@column.FkEntityName)>(key)?.@(@column.FkColumnName);
|
|
@: //t.@(@column.PropertyName)@(@column.FkColumnName)=db.Queryable<@(@column.FkEntityName)>().First(f => f.@(@column.FkLinkColumnName) == t.@(@column.PropertyName))).@(@column.FkColumnName);//
|
|
@:})
|
|
}
|
|
else if(@column.EffectType == "ApiTreeSelector"){
|
|
@:.Mapper(t =>
|
|
@:{
|
|
@: //使用缓存
|
|
@: var key = $"@(@column.FkEntityName)_{t.@(@column.PropertyName)}";
|
|
@: if (!sysCacheService.ExistKey(key))
|
|
@: {
|
|
@: var m = db.ForTenant<@(@column.FkEntityName)>().Queryable<@(@column.FkEntityName)>().First(f => f.@(@column.ValueColumn) == t.@(@column.PropertyName));
|
|
@: if (m != null) sysCacheService.Set(key, m);
|
|
@: }
|
|
@: t.@(@column.PropertyName)@(@column.DisplayColumn) = sysCacheService.Get<@(@column.FkEntityName)>(key)?.@(@column.DisplayColumn);
|
|
@: //t.@(@column.PropertyName)@(@column.FkColumnName)=db.Queryable<@(@column.FkEntityName)>().FirstAsync(f => f.@(@column.FkLinkColumnName) == t.@(@column.PropertyName))).@(@column.FkColumnName);//
|
|
@:})
|
|
}
|
|
}
|
|
;
|
|
|
|
return query;
|
|
}
|
|
}
|
|
@{
|
|
string LowerFirstLetter(string text)
|
|
{
|
|
return text.ToString()[..1].ToLower() + text[1..]; // 首字母小写
|
|
}
|
|
} |